- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
调用停止音频引擎函数时音频引擎崩溃。
下面是我用来启动和停止音频引擎的函数。
public func start_record() {
if audioEngine.isRunning {
regonised_text = ""
print("audio engine running")
audioEngine.inputNode?.removeTap(onBus: 0)
audioEngine.stop()
recognitionRequest?.endAudio()
audioEngine.reset()
} else {
print("audio engine not running")
speech_reconginiser.text = ""
speech_reconginiser.result = false
startRecording()
}
}
此函数用于开始录制音频。
public func startRecording() {
if recognitionTask != nil {
recognitionTask?.cancel()
recognitionTask = nil
}
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setMode(AVAudioSessionModeMeasurement)
try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
} catch {
print("audioSession properties weren't set because of an error.")
}
recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
guard let inputNode = audioEngine.inputNode else {
fatalError("Audio engine has no input node")
}
guard let recognitionRequest = recognitionRequest else {
fatalError("Unable to create an SFSpeechAudioBufferRecognitionRequest object")
}
recognitionRequest.shouldReportPartialResults = true
recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
var isFinal = false
if result != nil {
self.speech_reconginiser.text = ""
self.regonised_text = (result?.bestTranscription.formattedString)!
// print("Final text :", self.regonised_text)
self.speech_reconginiser.result = true
self.speech_reconginiser.text = self.regonised_text
// print("Final text 1213 :",self.speech_reconginiser.text)
isFinal = (result?.isFinal)!
} else {
self.speech_reconginiser.text = ""
self.speech_reconginiser.result = false
self.speech_reconginiser.text = ""
}
if error != nil || isFinal {
self.audioEngine.stop()
inputNode.removeTap(onBus: 0)
self.recognitionRequest = nil
self.recognitionTask = nil
}
})
let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, when) in
self.recognitionRequest?.append(buffer)
}
audioEngine.prepare()
do {
try audioEngine.start()
} catch {
print("audioEngine couldn't start because of an error.")
}
}
这是堆栈跟踪
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=1, subcode=0x18cd96ea8)
* frame #0: 0x000000018cd96ea8 CoreFoundation`___forwarding___ + 744
frame #1: 0x000000018cc92d4c CoreFoundation`_CF_forwarding_prep_0 + 92
frame #2: 0x000000018cc72a80 CoreFoundation`-[__NSArrayI dealloc] + 84
frame #3: 0x000000018b812134 libobjc.A.dylib`(anonymous namespace)::AutoreleasePoolPage::pop(void*) + 836
frame #4: 0x000000018cc6eb28 CoreFoundation`_CFAutoreleasePoolPop + 28
frame #5: 0x000000018cc729c0 CoreFoundation`CFRunLoopTimerInvalidate + 616
frame #6: 0x000000018cd417dc CoreFoundation`__CFRunLoopDoTimer + 908
frame #7: 0x000000018cd41068 CoreFoundation`__CFRunLoopDoTimers + 244
frame #8: 0x000000018cd3ec8c CoreFoundation`__CFRunLoopRun + 1484
frame #9: 0x000000018cc6eda4 CoreFoundation`CFRunLoopRunSpecific + 424
frame #10: 0x000000018e6d9074 GraphicsServices`GSEventRunModal + 100
frame #11: 0x0000000192f29c9c UIKit`UIApplicationMain + 208
frame #12: 0x0000000100542a2c GraspIO-Dev`main at AppDelegate.swift:22
frame #13: 0x000000018bc7d59c libdyld.dylib`start + 4
thread #4
frame #0: 0x000000018bd8da88 libsystem_kernel.dylib`__workq_kernreturn + 8
frame #1: 0x000000018be52fd0 libsystem_pthread.dylib`_pthread_wqthread + 792
frame #2: 0x000000018be52cac libsystem_pthread.dylib`start_wqthread + 4
thread #5
frame #0: 0x0000000103a80c80 libdispatch.dylib`_dispatch_introspection_thread_add + 188
frame #1: 0x0000000103a65380 libdispatch.dylib`_dispatch_worker_thread3 + 112
frame #2: 0x000000018be53100 libsystem_pthread.dylib`_pthread_wqthread + 1096
frame #3: 0x000000018be52cac libsystem_pthread.dylib`start_wqthread + 4
thread #6, name = 'com.apple.uikit.eventfetch-thread'
frame #0: 0x000000018bd6f224 libsystem_kernel.dylib`mach_msg_trap + 8
frame #1: 0x000000018bd6f09c libsystem_kernel.dylib`mach_msg + 72
frame #2: 0x000000018cd40e90 CoreFoundation`__CFRunLoopServiceMachPort + 192
frame #3: 0x000000018cd3eae4 CoreFoundation`__CFRunLoopRun + 1060
frame #4: 0x000000018cc6eda4 CoreFoundation`CFRunLoopRunSpecific + 424
frame #5: 0x000000018d789db4 Foundation`-[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
frame #6: 0x000000018d7aab84 Foundation`-[NSRunLoop(NSRunLoop) runUntilDate:] + 96
frame #7: 0x00000001938b3830 UIKit`-[UIEventFetcher threadMain] + 136
frame #8: 0x000000018d887318 Foundation`__NSThread__start__ + 996
frame #9: 0x000000018be5568c libsystem_pthread.dylib`_pthread_body + 240
frame #10: 0x000000018be5559c libsystem_pthread.dylib`_pthread_start + 284
frame #11: 0x000000018be52cb4 libsystem_pthread.dylib`thread_start + 4
thread #8
frame #0: 0x000000018be52ca8 libsystem_pthread.dylib`start_wqthread
thread #9
frame #0: 0x000000018bd8da88 libsystem_kernel.dylib`__workq_kernreturn + 8
frame #1: 0x000000018be52fd0 libsystem_pthread.dylib`_pthread_wqthread + 792
frame #2: 0x000000018be52cac libsystem_pthread.dylib`start_wqthread + 4
thread #10
frame #0: 0x000000018be52ca8 libsystem_pthread.dylib`start_wqthread
thread #11, name = 'com.apple.NSURLConnectionLoader'
frame #0: 0x000000018bd6f224 libsystem_kernel.dylib`mach_msg_trap + 8
frame #1: 0x000000018bd6f09c libsystem_kernel.dylib`mach_msg + 72
frame #2: 0x000000018cd40e90 CoreFoundation`__CFRunLoopServiceMachPort + 192
frame #3: 0x000000018cd3eae4 CoreFoundation`__CFRunLoopRun + 1060
frame #4: 0x000000018cc6eda4 CoreFoundation`CFRunLoopRunSpecific + 424
frame #5: 0x000000018d47bdf4 CFNetwork`+[NSURLConnection(Loader) _resourceLoadLoop:] + 404
frame #6: 0x000000018d887318 Foundation`__NSThread__start__ + 996
frame #7: 0x000000018be5568c libsystem_pthread.dylib`_pthread_body + 240
frame #8: 0x000000018be5559c libsystem_pthread.dylib`_pthread_start + 284
frame #9: 0x000000018be52cb4 libsystem_pthread.dylib`thread_start + 4
thread #12, name = 'com.apple.CFStream.LegacyThread'
frame #0: 0x000000018bd6f224 libsystem_kernel.dylib`mach_msg_trap + 8
frame #1: 0x000000018bd6f09c libsystem_kernel.dylib`mach_msg + 72
frame #2: 0x000000018cd40e90 CoreFoundation`__CFRunLoopServiceMachPort + 192
frame #3: 0x000000018cd3eae4 CoreFoundation`__CFRunLoopRun + 1060
frame #4: 0x000000018cc6eda4 CoreFoundation`CFRunLoopRunSpecific + 424
frame #5: 0x000000018cd4e794 CoreFoundation`_legacyStreamRunLoop_workThread + 268
frame #6: 0x000000018be5568c libsystem_pthread.dylib`_pthread_body + 240
frame #7: 0x000000018be5559c libsystem_pthread.dylib`_pthread_start + 284
frame #8: 0x000000018be52cb4 libsystem_pthread.dylib`thread_start + 4
thread #13, name = 'com.apple.CFSocket.private'
frame #0: 0x000000018bd8d23c libsystem_kernel.dylib`__select + 8
frame #1: 0x000000018cd47cb0 CoreFoundation`__CFSocketManager + 632
frame #2: 0x000000018be5568c libsystem_pthread.dylib`_pthread_body + 240
frame #3: 0x000000018be5559c libsystem_pthread.dylib`_pthread_start + 284
frame #4: 0x000000018be52cb4 libsystem_pthread.dylib`thread_start + 4
thread #14
frame #0: 0x000000018bd6f278 libsystem_kernel.dylib`semaphore_timedwait_trap + 8
frame #1: 0x0000000103a7f238 libdispatch.dylib`_os_semaphore_timedwait + 92
frame #2: 0x0000000103a67db8 libdispatch.dylib`_dispatch_semaphore_wait_slow + 72
frame #3: 0x0000000103a66f8c libdispatch.dylib`_dispatch_worker_thread + 272
frame #4: 0x000000018be5568c libsystem_pthread.dylib`_pthread_body + 240
frame #5: 0x000000018be5559c libsystem_pthread.dylib`_pthread_start + 284
frame #6: 0x000000018be52cb4 libsystem_pthread.dylib`thread_start + 4
thread #15, name = 'AVAudioSession Notify Thread'
frame #0: 0x000000018bd6f224 libsystem_kernel.dylib`mach_msg_trap + 8
frame #1: 0x000000018bd6f09c libsystem_kernel.dylib`mach_msg + 72
frame #2: 0x000000018cd40e90 CoreFoundation`__CFRunLoopServiceMachPort + 192
frame #3: 0x000000018cd3eae4 CoreFoundation`__CFRunLoopRun + 1060
frame #4: 0x000000018cc6eda4 CoreFoundation`CFRunLoopRunSpecific + 424
frame #5: 0x00000001a6fb54f4 AVFAudio`GenericRunLoopThread::Entry(void*) + 164
frame #6: 0x00000001a6fdb814 AVFAudio`CAPThread::Entry(CAPThread*) + 84
frame #7: 0x000000018be5568c libsystem_pthread.dylib`_pthread_body + 240
frame #8: 0x000000018be5559c libsystem_pthread.dylib`_pthread_start + 284
frame #9: 0x000000018be52cb4 libsystem_pthread.dylib`thread_start + 4
我无法找到它是如何发生的,我在堆栈溢出中进行了相当大的搜索,然后我发现由于输入节点在停止音频引擎时未变为空。我得到的错误是“EXC_BAD_ACCESS (code=1, address=0x20)”
最佳答案
试试这个:
let recordingFormat = inputNode.inputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, when) in
self.recognitionRequest?.append(buffer)
}
audioEngine.prepare()
do {
try audioEngine.start()
} catch {
print("audioEngine couldn't start because of an error.")
}
基本上将您的 recordingFormat
从 outputFormat
更改为 inputFormat
。
这个代码块(上面)是否应该在您的 recognitionTask
block 中?如果您不确定,请尝试将代码放在该 block 中。
关于ios - 音频引擎在停止时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46314815/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!