gpt4 book ai didi

ios - 在 SKRecognizer 中检测不到语音

转载 作者:行者123 更新时间:2023-12-03 16:58:21 25 4
gpt4 key购买 nike

我正在使用 Nuance 的 SpeechKit(特别是 SKRecognizer 类)来检测用户单击按钮时的语音。但是,如果他们在预定的时间内(3 秒左右)没有说话,我想取消录音 session 。在 init 函数中传递“SKShortEndOfSpeechDetection”似乎并不能解决问题,它只会在用户已经说出某些内容时停止录制。还有其他方法可以实现这一点吗?

最佳答案

我以前使用过 Nuance 的 SpeechKit,不幸的是它缺少一些东西,我记得这是其中之一。

您可以尝试使用名为 OpenEars 的完全免费、开源的 iOS 语音框架。 .

<小时/>

但是,如果您仍要尝试使用 SpeechKit,我认为完成您想要的任务的唯一方法是监视 SKRecognizer 上的 audioLevel 属性。根据SpeechKit Docs该属性描述:

The average power of the most recent audio during recording.

我已经检查过了,它不符合 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
}
}

需要进行一些实验才能找到合适的阈值。使用此方法,您只需跟踪用户是否已发言,然后使用另一个计时器来查看他们是否在您预先确定的截止时间之前发言。

关于ios - 在 SKRecognizer 中检测不到语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com