我使用Nuance的SpeechKit(特別是SKRecognizer類)來檢測用戶點擊按鈕時的語音。但是,如果他們在預先確定的時間內(3秒左右)不說話,我想取消錄音。在init函數中傳遞「SKShortEndOfSpeechDetection」似乎沒有辦法,它只會在用戶已經說出某些內容時停止錄製。有沒有其他的方法來完成這個?在SKRecognizer中檢測不到語音
1
A
回答
3
我已經使用了Nuance的SpeechKit前,不幸的是它缺少一些東西,我記得他們的這是一個。
你可以嘗試使用完全免費,開源的語音框架爲iOS稱爲OpenEars。
但是,如果你仍然要去嘗試和使用SpeechKit我可以看到完成你想要什麼的唯一方式是通過監測SKRecognizer
的audioLevel
財產。根據SpeechKit Docs此屬性描述:
記錄期間最新音頻的平均功率。
我已經檢查過,它不符合KVO標準,所以您不能簡單地添加觀察者來監視它的更改。要監視這個變化,你可以添加一個NSTimer
,每隔一段時間檢查一次值。
NSTimer *timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(monitorAudioLevel:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
...
-(void)monitorAudioLevel:(NSTimer *)timer {
float audioLevel = speechRecognizer.audioLevel;
NSLog(@"level: %f", audioLevel);
if(audioLevel > THRESHOLD) {
//user has spoken
[timer invalidate];
}
else {
//user has not spoken
}
}
這需要進行一些試驗,以找到一個很好的信用額度是多少。使用這種方法,您只需跟蹤用戶是否說過話,然後使用另一個計時器來查看他們是否在您預先確定的截斷時間之前發言。
0
我有類似的實現bbodayle建議,它的工作。一些好的閾值是0.4,意味着帶有一些遠程背景噪聲的靜音。
相關問題
- 1. Python中的語音檢測或無語音檢測
- 2. C語音檢測#
- 3. AVAudioRecorder - 測量語音檢測
- 4. android - 如何檢測語音
- 5. 環境語音檢測
- 6. 「語音觸發」檢測
- 7. 聲音檢測不是離子中的語音 - 如何?
- 8. Android中的語音活動檢測
- 9. 語音中的情感檢測
- 10. 語音檢測在Android應用程序
- 11. 語音識別:檢測日語假名(輔音+元音)
- 12. 在Android中檢測聲音或語音的開始
- 13. 谷歌語音API中口語的語言代碼檢測
- 14. 在Python中檢測元音與輔音
- 15. HTML - 檢測不到的音頻文件
- 16. TelephonyManager在撥出電話時檢測到語音信箱
- 17. 元音未被檢測到?
- 18. 如何檢測音頻流中的語音
- 19. c基本頻率+語音檢測#
- 20. 連續語音識別終點檢測
- 21. 使用Sox爲語音檢測和流
- 22. 脫機Android語音活動檢測
- 23. 在錄音中檢測不同的聲音/來源
- 24. 語音檢索
- 25. 如何在Android中檢測語音組件?
- 26. 如何檢測用戶在iOS中使用語音輸入?
- 27. 如何在iPhone應用程序中檢測語音?
- 28. 從廣播音頻流中檢測,如果它是語音或音樂
- 29. 在語音框架中找到音高
- 30. 如何檢測語音到文本是否可用於Android?