- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现一个 iOS 应用程序(快速),它可以改变手机麦克风输入的音调,并在用户说话时通过扬声器播放修改后的声音,延迟时间最短(最多几毫秒)。到目前为止,我有以下代码:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player : AVAudioPlayerNode!
var timePitch : AVAudioUnitTimePitch!
var engine : AVAudioEngine!
override func viewDidLoad() {
super.viewDidLoad()
self.timePitch = AVAudioUnitTimePitch()
self.player = AVAudioPlayerNode()
self.engine = AVAudioEngine()
timePitch.pitch = -500
timePitch.rate = 1.0
engine.inputNode.installTap(onBus: 0, bufferSize: 4410, format: engine.inputNode.outputFormat(forBus: 0), block: {
(buffer: AVAudioPCMBuffer, time: AVAudioTime) in
self.engine.attach(self.player)
self.engine.attach(self.timePitch)
self.engine.connect(self.player, to: self.timePitch, format: buffer.format)
self.engine.connect(self.timePitch, to: self.engine.mainMixerNode, format: buffer.format)
self.player.scheduleBuffer(buffer, at: nil, options: AVAudioPlayerNodeBufferOptions.loops, completionHandler: nil)
self.player.play()
})
engine.prepare()
do {
try engine.start()
} catch _ {
print("Failed to start engine!")
}
}
}
但是,一旦我运行该应用程序,我就会收到以下错误:
2020-07-27 01:06:03.972753+0430 Pitch Shifter[37745:5251379] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x6000031f40e0> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2020-07-27 01:06:04.152148+0430 Pitch Shifter[37745:5251392] *** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'player started when in a disconnected state'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff23c7127e __exceptionPreprocess + 350
1 libobjc.A.dylib 0x00007fff513fbb20 objc_exception_throw + 48
2 CoreFoundation 0x00007fff23c70ff8 +[NSException raise:format:arguments:] + 88
3 AVFAudio 0x00007fff20a7ff67 _Z19AVAE_RaiseExceptionP8NSStringz + 156
4 AVFAudio 0x00007fff20b13c57 _ZN21AVAudioPlayerNodeImpl9StartImplEP11AVAudioTime + 453
5 AVFAudio 0x00007fff20b116cc -[AVAudioPlayerNode play] + 60
6 Pitch Shifter 0x000000010c06a25d $s13Pitch_Shifter14ViewControllerC11viewDidLoadyyFySo16AVAudioPCMBufferC_So0H4TimeCtcfU_ + 3005
7 Pitch Shifter 0x000000010c06a32f $sSo16AVAudioPCMBufferCSo0A4TimeCIeggg_AbDIeyByy_TR + 95
8 AVFAudio 0x00007fff20aaee1b _ZN14AVAudioNodeTap10TapMessage25RealtimeMessenger_PerformEv + 1325
9 AVFAudio 0x00007fff20b21e4b _ZN17RealtimeMessenger23_PerformPendingMessagesEv + 59
10 AVFAudio 0x00007fff20b21df2 ___ZN17RealtimeMessengerC2EN10applesauce8dispatch2v15queueE_block_invoke + 97
11 libdispatch.dylib 0x000000010c397d48 _dispatch_client_callout + 8
12 libdispatch.dylib 0x000000010c39a6ba _dispatch_continuation_pop + 552
13 libdispatch.dylib 0x000000010c3ada0f _dispatch_source_invoke + 2205
14 libdispatch.dylib 0x000000010c39e40e _dispatch_lane_serial_drain + 307
15 libdispatch.dylib 0x000000010c39f1b5 _dispatch_lane_invoke + 476
16 libdispatch.dylib 0x000000010c3a928c _dispatch_root_queue_drain + 351
17 libdispatch.dylib 0x000000010c3a907f _dispatch_worker_thread + 278
18 libsystem_pthread.dylib 0x00007fff52466109 _pthread_start + 148
19 libsystem_pthread.dylib 0x00007fff52461b8b thread_start + 15
)
libc++abi.dylib: terminating with uncaught exception of type NSException
感谢任何解决此问题的帮助。
编辑:
我认为问题在于 installTap
回调函数从未被调用,因此链被破坏了。
如果我使用 AVFoundation 的时间效果来处理实时麦克风输入的方法是正确的,那么如何解决这个错误?
或者,如果我的方法方向错误,我如何才能以最小延迟(最多几毫秒的延迟)实时更改设备麦克风输入的音高?
最佳答案
我找不到上述问题的正确答案,如果有人能回答我将不胜感激,但现在我找到了 AudioKit这是一个很棒的声音处理库,可以完美地完成这项工作。
This是我项目源代码的链接,如果将来有人需要的话。
import UIKit
import AudioKit
import AudioKitUI
class ViewController: UIViewController {
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var label: UILabel!
@IBOutlet var audioInputPlot: AKNodeOutputPlot!
var micBooster: AKBooster?
var pitchShifter: AKPitchShifter?
var tracker: AKFrequencyTracker!
let mic = AKMicrophone()
override func viewDidLoad() {
super.viewDidLoad()
AKSettings.sampleRate = AudioKit.engine.inputNode.inputFormat(forBus: 0).sampleRate
let micMixer = AKMixer(mic)
tracker = AKFrequencyTracker.init(mic)
micBooster = AKBooster(micMixer)
pitchShifter = AKPitchShifter(micBooster, shift: 0)
micBooster!.gain = 5
AudioKit.output = pitchShifter
do{
try AudioKit.start()
} catch {
print("error occured")
}
}
}
关于ios - Swift iOS 中的实时变调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63105592/
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 2年前关闭。
我想显示我的网站上所有用户都在线(实时;就像任何聊天模块一样)。我正在使用下面提到的脚本来执行此操作。 HTML: Javascript: var doClose = false; documen
有什么方法可以知道 Algolia 何时成功处理了排队作业,或者与上次重新索引相比,Algolia 是否索引了新文档? 我们希望建立一个系统,每当新文档被索引时,浏览网站的用户都会收到实时更新警告,并
构建将在“桌面”而不是浏览器中运行的 Java 应用程序的推荐策略是什么。该应用程序的特点是: 1. Multiple application instances would be running o
这是场景: 我正在编写一个医疗相关程序,可以在没有连接的情况下使用。当采取某些措施时,程序会将时间写入CoreData记录。 这就是问题所在,如果他们的设备将时间设置为比实际时间早的时间。那将是一个大
我有: $(document).ready(function () { $(".div1, .div2, .div3, .div4, .div5").draggable();
我有以下 jquery 代码: $("a[id*='Add_']").live('click', function() { //Get parentID to add to. var
我有一个 jsp 文件,其中包含一个表单。提交表单会调用处理发送的数据的 servlet。我希望当我点击提交按钮时,一个文本区域被跨越并且应该实时显示我的应用程序的日志。我正在使用 Tomcat 7。
我编辑了我的问题,我在 Default.aspx 页面中有一个提交按钮和文本框。我打开两个窗口Default.aspx。我想在这个窗口中向文本框输入文本并按提交,其他窗口将实时更新文本框。 请帮助我!
我用 php 创建了一个小型 CMS,如果其他用户在线或离线,我想显示已登录的用户。 目前,我只创建一个查询请求,但这不会一直更新。我希望用户在发生某些事情时立即看到更改。我正在寻找一个类似于 fac
我有以下问题需要解决。我必须构建一个图形查看器来查看海量数据集。 我们有一些特定格式的文件,其中包含数百万条代表实验结果的记录。每条记录代表大图上的一个样本点。我见过的最大的文件有 4370 万条记录
我最近完成了申请,但遇到了一个大问题。我一次只需要允许 1 个用户访问它。每个用户每次都可以访问一个索引页面和“开始”按钮。当用户点击开始时,应用程序锁定,其他人需要等到用户完成。当用户关闭选项卡/浏
我是 Android 开发新手。我正在寻找任何将音高变换应用到输出声音(实时)的方法。但我找不到任何起点。 我找到了这个 topic但我仍然不知道如何应用它。 有什么建议吗? 最佳答案 一般来说,该算
背景 用户计算机上的桌面应用程序从调制解调器获取电话号码,并在接到电话后将其发送到 PHP 脚本。目前,我可以通过 PHP 在指定端口上接收数据/数据包。然后我有一个连接到 411 数据库并返回指定电
很抱歉提出抽象问题,但我正在寻找一些关于在循环中执行一些等效操作的应用程序类型的示例/建议/文章,并且循环的每次迭代都应该在特定时间部分公开其结果(例如, 10 秒)。 我的应用程序在外部 WCF 服
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What specifically are wall-clock-time, user-cpu-time,
我最近遇到了一个叫做 LiveChart 的工具,决定试用一下。 不幸的是,我在弄清楚如何实时更新图表值时遇到了一些问题。我很确定有一种干净正确的方法可以做到这一点,但我找不到它。 我希望能够通过 p
我正在实现实时 flutter 库 https://pub.dartlang.org/packages/true_time 遇到错误 W/DiskCacheClient(26153): Cannot
我一直在使用 instagram 的实时推送 api ( http://instagram.com/developer/realtime/ ) 来获取特定位置的更新。我使用“半径”的最大可能值,即 5
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我是一名优秀的程序员,十分优秀!