我正在尝试运行 sphinx 4 pre alpha 的对话框演示,但它给出了错误。
我正在创建一个实时语音应用程序。
我使用 Maven 导入了项目,并遵循了有关堆栈溢出的指南:https://stackoverflow.com/a/25963020/2653162
该错误表示有关 16 khz 和单声道通道的问题。很明显这是关于采样的事情。还谈到了麦克风。
我查看了如何将麦克风设置更改为 16 kHz 和 16 位,但 Windows 7 中没有这样的选项
:
问题是 HelloWorld 和对话框演示在 sphinx4 1.06 beta 中运行良好,但在我尝试最新版本后,它出现以下错误:
Exception in thread "main" java.lang.IllegalStateException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported.
at edu.cmu.sphinx.api.Microphone.<init>(Microphone.java:38)
at edu.cmu.sphinx.api.SpeechSourceProvider.getMicrophone(SpeechSourceProvider.java:18)
at edu.cmu.sphinx.api.LiveSpeechRecognizer.<init>(LiveSpeechRecognizer.java:34)
at edu.cmu.sphinx.demo.dialog.Dialog.main(Dialog.java:145)
Caused by: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported.
at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(DirectAudioDevice.java:513)
at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:121)
at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:413)
at edu.cmu.sphinx.api.Microphone.<init>(Microphone.java:36)
... 3 more
不知道该怎么做才能解决这个问题。
如果你修改SpeechSourceProvider
要返回恒定的麦克风引用,它不会尝试创建多个麦克风引用,这是问题的根源。
public class SpeechSourceProvider {
private static final Microphone mic = new Microphone(16000, 16, true, false);
Microphone getMicrophone() {
return mic;
}
}
这里的问题是,您不希望多个线程尝试访问单个资源,但对于演示,识别器会根据需要停止和启动,这样它们就不会全部竞争麦克风。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)