首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS10语音识别“听”音效

iOS10语音识别“听”音效
EN

Stack Overflow用户
提问于 2016-12-12 07:40:33
回答 1查看 723关注 0票数 5

我正在使用新的iOS10框架进行实时语音识别。我使用AVCaptureSession访问音频。

我有一个“聆听”的哔声通知用户,他可以开始说话。最好的方式是在第一次打电话给captureOutput(:didOutputSampleBuffer..),但如果我试着在会议开始后播放声音,声音就不会播放。不会抛出错误..。只是无声地弹不出..。

我试过的是:

  • 播放系统声音(AudioServicesPlaySystemSound...())
  • 使用AVPlayer播放一个资产
  • 还尝试了上述两种解决方案--在主队列上异步/同步

似乎无论我在做什么,在触发识别后不可能触发任何类型的音频播放(不确定是AVCaptureSession还是SFSpeechAudioBufferRecognitionRequest /SFSpeechRecognitionTask.)

有什么想法吗?苹果甚至建议播放一种“聆听”的声音效果。 (用Siri自己做),但是我找不到任何参考/例子来说明如何去做.(他们的"SpeakToMe“例子不播放声音)

  • 我可以在触发会话之前播放声音,它确实有效(在播放声音结束时开始会话时),但有时在实际开始识别时(主要是使用BT耳机并从不同的AudioSession类别切换--我没有完成事件.)--因为这一点,我需要一种在录音实际开始时播放声音的方法,而不是在它触发和交叉手指之前,它不会延迟启动它……
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-12 20:52:01

显然,要成功地开始语音识别会话,只有在识别真正的开始之后,才能发挥“倾听”效果,就必须遵循一系列“规则”。

  1. 必须在主队列上调用会话设置和触发。所以: DispatchQueue.main.async { speechRequest = SFSpeechAudioBufferRecognitionRequest()任务=recognizer.recognitionTask(有: speechRequest,委托: self) capture = AVCaptureSession() //.shouldHandleRecordingBegan =真capture?.startRunning() }
  2. “聆听”的效果应该是通过AVPlayer播放,而不是系统声音。
  3. 知道我们是绝对是记录的最安全的地方是在AVCaptureAudioDataOutputSampleBufferDelegate的委托调用中,当我们收到第一个sampleBuffer回调时: func captureOutput(_ captureOutput: AVCaptureOutput!,didOutputSampleBuffer sampleBuffer: CMSampleBuffer!,from connection: AVCaptureConnection!) {//每一次识别会话,如果shouldHandleRecordingBegan { shouldHandleRecordingBegan = false player = AVPlayer(url: Bundle.main.url(forResource:“侦听”,withExtension:"aiff")!)player.play() DispatchQueue.main.async {//调用委托/处理程序闭包/post通知等。}} //附加缓冲区到语音识别speechRequest?.appendAudioSampleBuffer(sampleBuffer) }
  4. 最终的识别效果要容易得多: 如果要取消而不获得结果的话,var and = false,如果task?.state == .running var task?.state == .starting { task?.finish() //或task?.cancel()取消的话。如果是真== capture?.isRunning { capture?.stopRunning() }如果结束{ player = AVPlayer(url: Bundle.main.url(forResource: done,withExtension:"aiff")!)player.play() }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41096150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档