我努力把苹果语音合成音频单元的东西(只适用于MacOS的,不是的iOS)到AudioKit,我已经建立了一个AKSpeechSynthesizer类(最初由wangchou在此创建pull请求)和演示项目都可以在发展AudioKit的分支.
我的项目与这个可可语音合成示例非常相似,但在这个项目中,速率变量可以在每分钟的低字数(40)到高数字(300 ish)之间平滑变化和变化.但是,我的项目以默认速率175开始,任何更改都会使速率降低到爬行速度 - 除非您将其更改为350,否则速度会超快.
我不知道我在做什么与这个例子有什么不同,因为两个项目都依赖
SetSpeechProperty(speechChannel, kSpeechRateProperty, newRate as NSNumber?)
Run Code Online (Sandbox Code Playgroud)
设定费率.
最大的区别是我的合成器被设置为音频单元,而我认为工作示例只使用默认输出到扬声器.
频率(音调)或调制(pitchMod)的其他参数也表现出奇怪的行为,但它们不那么引人注意,而且这两个项目的工作都有点滑稽.
有人可以告诉我为什么我的工作不起作用或通过拉取请求修复它?任何帮助将在代码中受到高度赞赏和归属.
谢谢!
我有音频文件.我对它做了一些影响
let pitchshifter = AKPitchShifter(self.audioPlayer)
pitchshifter.shift = 10
AudioKit.output = pitchshifter
Run Code Online (Sandbox Code Playgroud)
如果我在应用程序中播放它,它可以工作,但我想将其保存为新文件,以便稍后将其用作avasset.如何实施?
我尝试使用AKNodeRecorder,但这会产生空音轨:
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded")
let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 2, interleaved: false)!
let tape = try! AKAudioFile(forWriting: url, settings: format.settings)
let mixer = AKMixer(self.audioPlayer!, pitchshifter)
AudioKit.output = mixer
self.recorder = try! AKNodeRecorder(node: mixer, file: tape)
try? AudioKit.start()
self.audioPlayer?.play()
self.audioPlayer?.completionHandler = {
self.recorder?.stop()
self.selectedAudioURL = tape.url
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了renderToFile方法 - 它也没有工作,我得到了这个错误
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded.m4a")
let format = AVAudioFormat(commonFormat: …
Run Code Online (Sandbox Code Playgroud) 我更新到了最新版本的Audiokit 4.5,现在正在打印要收听麦克风振幅的Audiokit类:55:控制台上的EXCEPTION(-1):“”无限。该应用程序不会崩溃或发生任何事情。
我的应用程序是一个使用GPUImage库记录的摄像机应用程序。仅当由于某种原因开始录制时,日志才会显示。
在此之上。我的onAmplitudeUpdate回调方法不再输出任何内容,仅输出0.0个值。在更新Audiokit之前没有发生这种情况。这里有什么想法吗?
这是我的课:
// G8Audiokit.swift
// GenerateToolkit
//
// Created by Omar Juarez Ortiz on 2017-08-03.
// Copyright © 2017 All rights reserved.
//
import Foundation
import AudioKit
class G8Audiokit{
//Variables for Audio audioAnalysis
var microphone: AKMicrophone! // Device Microphone
var amplitudeTracker: AKAmplitudeTracker! // Tracks the amplitude of the microphone
var signalBooster: AKBooster! // boosts the signal
var audioAnalysisTimer: Timer? // Continuously calls audioAnalysis function
let amplitudeBuffSize = 10 // Smaller buffer will yield more amplitude …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,AudioKit 4.0(今天的版本),将无法在模拟器上编译.它可以很好地编译设备.
我得到的错误是:
'AKMicrophone' is unavailable: cannot find Swift declaration for this class
'AKFrequencyTracker' is unavailable: cannot find Swift declaration for this class
'AKBooster' is unavailable: cannot find Swift declaration for this class
Run Code Online (Sandbox Code Playgroud)
我怀疑我的项目设置有问题,但它们看起来与AK示例相同.
我正在运行10.13.2 Beta(17C67b)的MBP上运行Xcode 9.2 b2.
帮助赞赏.
更新:
嗨,Aure,我在另一台计算机上构建了一个新系统.这是运行GM 10.13.1和GM Xcode 9.1.
然而,源(我的应用程序)是在iCloud文档中.
我从一个新的下载重建了Audiokit和AudiokitUI,但我得到了与昨天相同的结果.
我确实注意到有两个警告:" Umbrella header for AK4ParamRampBase.hpp not found
"和相同的AK4LinearParamRamp.hpp
如果您想让我尝试别的,请告诉我.
我正在开发的应用程序需要在声音链中动态添加/删除/重新排列组件。
到目前为止,我主要.disconnectOutput()
在大多数组件上使用该方法,然后重新连接所有组件。这在大多数情况下都有效,但有时似乎一个节点连接在声音链中的多个点,如果节点连接到AudioKit.output
.
AudioKit 提供了许多公共方法,例如.detach()
, .disconnectInput()
,.disconnect()
我不太清楚修改声音链的最干净或最安全的方法。做这个的最好方式是什么?
另外,是否有某种方法可以跟踪哪些节点连接到哪些节点?
如何在 AudioKit iOS 中将输入节点动态连接到活动链中的混音器?
环境:AudioKit 4.3、Swift 4.1、Xcode 9.4.1、iOS 11.4。
问题
我正在构建一个应用程序,其中包含由 AKNode 对象链组成的动态模块。这些模块根据请求动态连接到正在运行的 AudioKit 引擎的专用 AKMixer 节点或从其分离。这很有效,除非尝试连接任何包含输入节点(例如 AKMicrophone 或 AKStereoInput)的模块,否则会导致崩溃:
2018-06-14 10:13:33.696384-0700 MyApp[3440:2578936] [mcmx] 338: 输入总线 0 采样率为 0 2018-06-14 10:13:33.6967049:MyApp3[0704e] [mcmx] ] AVAEInternal.h:103:_AVAE_CheckNoErr: [AVAudioEngineGraph.mm:3632:UpdateGraphAfterReconfig: (AUGraphParser::InitializeActiveNodesInOutputChain(ThisGraph, kOutputChainFullTraversal, *conn.srcNode, isChainActive)): 错误 -10875-13070:10875-1307 -0700 DynamicMic[3440:2578936] *** 由于未捕获的异常“com.apple.coreaudio.avfaudio”而终止应用程序,原因:“错误 -10875”
或者,调用AudioKit.stop()
,然后执行有问题的连接,然后调用AudioKit.start()
无法启动 AudioKit,但它避免了崩溃:
AKMicrophone.swift:init():45:Mixer 输入 8 2018-06-14 10:16:09.532277-0700 MyApp[3443:2580588] [mcmx] 338:输入总线 0 采样率为 0 2018-06-1 16:09.532603-0700 MyApp[3443:2580588] [avae] AVAEInternal.h:103:_AVAE_CheckNoErr: [AVAudioEngineGraph.mm:1265:Initialize: (err = AUGraphParser::InitializeActiveNodesInOutputChain),GraphActiveNodesInOutputChain() ): 错误 -10875 2018-06-14 10:16:09.532654-0700 MyApp[3443:2580588] [avae] AVAudioEngine.mm:149:-[AVAudioEngine …
我在我的项目中使用AudioKit.通过使用混合节点操场示例中建议的过程,我正在播放多个音频.我的要求是将混合音频上传到服务器并显示和播放其他一些屏幕.我遵循了这个建议.如何在swift中将多个音频混合并保存到单个音频中,但它无法正常工作.
提供建议以获取混合音频输出以上载到服务器.
我在 AudioKit 4.9.1 上,无法使用新的AKSequencer
(替换AKAppleSequencer
)播放 MIDI 文件。没有声音播放。假设 MIDI 文件和样本已正确加载,因为它们以前使用AKAppleSequencer
. 还启用了背景音频模式功能。
这是相关代码:(我也尝试过AKSampler
,AKAppleSampler
但结果相同)
class MIDIPlayer {
var sampler: AKSampler
var legacySampler: AKAppleSampler
var sequencer: AKSequencer
init(withSfz sfz: String, orSf2 sf2: String, andMidiFile midiFile: String) {
self.sampler = AKSampler()
self.legacySampler = AKAppleSampler()
try? legacySampler.loadSoundFont(sf2, preset: 0, bank: 0)
sampler.loadSFZ(url: Bundle.main.url(forResource: sfz, withExtension: "sfz")!)
AudioKit.output = sampler
try? AudioKit.start()
sequencer = AKSequencer(targetNode: sampler)
// sequencer = AKSequencer(targetNode: legacySampler)
let midi = AKMIDIFile(url: Bundle.main.url(forResource: midiFile, withExtension: …
Run Code Online (Sandbox Code Playgroud) 我正在运行 XCode 12.4 和 iOS 13.7。下面,简单的类
import AudioKit
import UIKit
class SoundManager {
private var sampler: AKAppleSampler
private var booster: AKBooster
private var reverb: AKReverb
private let mixer: AKMixer
required init() {
sampler = AKAppleSampler()
booster = AKBooster(sampler, gain: 3.0)
reverb = AKReverb(booster)
mixer = AKMixer()
}
func setup() {
reverb.loadFactoryPreset(.largeRoom)
mixer.connect(input: reverb)
AKManager.output = mixer
try? AKManager.start()
}
}
Run Code Online (Sandbox Code Playgroud)
当被调用时
let soundManager = SoundManager()
soundManager.setup()
Run Code Online (Sandbox Code Playgroud)
与
HALB_IOBufferManager_Client::GetIOBuffer: 流索引超出范围 AQME.h:254:IOProcFailure: AQDefaultDevice (1): 输出流 0: 空缓冲区 AQMEIO_HAL.cpp:1774:IOProc: EXCEPTION throw (-50): error …
嘿,我想知道是否有人可以指出我正确的方向。
我正在构建一个 Mac 音频应用程序,我需要执行以下操作
到目前为止,我已经研究过使用以下内容:
AudioKit
这个框架看起来很棒,并且有我想做的大部分事情的示例应用程序,但是它似乎只接受 Mac 在设置中选择的音频输入。这对我来说是不可能的,因为我希望用户能够在应用程序中进行选择(就像 GarageBand 或 Neural Dsp 插件一样)
使用AudioEngine
我可以获得可用的输入设备,但我发现的所有内容都表明它们在应用程序中不可更改 - 这是显示它们的代码
struct InputDevicePicker: View {
@State var device: Device
var engine: AudioEngine
var body: some View {
Picker("Input: \(device.deviceID)", selection: $device) {
ForEach(getDevices(), id: \.self) {
Text($0.name)
}
}
.pickerStyle(MenuPickerStyle())
.onChange(of: device, perform: setInputDevice)
}
func getDevices() -> [Device] {
AudioEngine.inputDevices.compactMap { $0 }
}
func setInputDevice(to device: Device) { …
Run Code Online (Sandbox Code Playgroud) macos avfoundation avcapturesession avcapturedevice audiokit
audiokit ×10
ios ×5
swift ×4
avfoundation ×2
core-audio ×2
aksequencer ×1
macos ×1
midi ×1
playback ×1
xcode12 ×1