我正在尝试使用pocketsphinx进行简单的语音到文本映射(语法非常简单,例如:
public <grammar> = (Matt, Anna, Tom, Christine)+ (One | Two | Three | Four | Five | Six | Seven | Eight | Nine | Zero)+ ;
例如:
Tom Anna Three Three
收益率
Tom Anna 33
我调整了声学模型(考虑到我的外国口音),之后我获得了不错的表现(约94%的准确率)。我使用了约3分钟的训练集。现在我正在尝试做同样的事情,但对麦克风耳语。准确率显着下降到约50%,不需要训练。通过口音训练,我获得了约60%。我尝试了其他想法,包括去噪和提高音量。我阅读了整个文档,但想知道是否有人可以回答一些问题,这样我就可以更好地知道我应该朝哪个方向提高性能。
1) 在本教程中,您将采用hub4wsj\U sc\U 8k acustic模型。我想“8k”是一个采样参数。使用狮身人面像时,使用“-samprate 16000”。是否有意使用16k采样率的数据来训练8k模型?为什么没有使用8k采样数据?它对性能有影响吗?
2) 在狮身人面像4.1中(与pocketsphinx相比),有不同的声学模型,例如WSJ\U 8gau\U 13dCep\U 16k\U 40mel\U 130Hz\U 6800Hz。罐子这些模型可以与pocketsphinx一起使用吗?对于16k采样率的数据,16k采样的acustic模型通常会有更好的性能吗?
3)在使用数据进行训练时,我应该使用正常说话模式(仅适应我的口音)还是耳语模式(适应耳语和我的口音)?我想我尝试了这两种情况,没有注意到任何区别来得出任何结论,但我不知道口袋里的斯芬克斯内部结构,所以我可能做错了什么。
4)我使用以下脚本记录了教程中的自适应训练和测试数据:
for i in `seq 1 20`; do
fn=`printf arctic_%04d $i`;
read sent; echo $sent;
rec -r 16000 -e signed-integer -b 16 -c 1 $fn.wav 2>/dev/null;
done < arctic20.txt
我注意到每次我按下Control C时,这个按键在导致错误的录制音频中都是不同的。有时修剪音频有助于纠正或导致其他错误。是否有任何要求要求每个录音在说话前后都有几秒钟的相当时间?
5) 积累观察计数时,是否有任何设置可以改进性能?
6) 半连续模型和连续模型有什么区别?Pocketsphenx可以使用连续模型吗?
7) 我注意到,与pocketsphinx extra中的文件相比,sphinx4中的“mixed\u weights”文件要小得多。这有什么区别吗?
8) 我尝试了不同的去除白噪声的组合(使用“sox”工具包,例如sox noised.wav filtered.wav noisered profile.nfo 0.1)。根据最后一个参数,有时情况会有所改善(约3%),有时情况会更糟。消除噪音是好的还是Pocketsphenx也在这样做?我的环境很安静,我想只有白噪音,当音频记录下来的耳语时,我能有更多的反馈。
9) 我注意到,在大多数情况下,单独提高音量(增益)只会使性能稍差一点,即使人类更容易辨别单词。我应该避免吗?
10) 总的来说,我尝试了不同的组合,当仅去除噪声时,我得到的最佳效果约为65%,因此只有轻微(5%)的改善。以下是一些统计数据:
//ORIGNAL UNPROCESSED TESTING FILES
TOTAL Words: 111 Correct: 72 Errors: 43
TOTAL Percent correct = 64.86% Error = 38.74% Accuracy = 61.26%
TOTAL Insertions: 4 Deletions: 13 Substitutions: 26
//DENOISED + VOLUME UP
TOTAL Words: 111 Correct: 76 Errors: 42
TOTAL Percent correct = 68.47% Error = 37.84% Accuracy = 62.16%
TOTAL Insertions: 7 Deletions: 4 Substitutions: 31
//VOLUME UP
TOTAL Words: 111 Correct: 69 Errors: 47
TOTAL Percent correct = 62.16% Error = 42.34% Accuracy = 57.66%
TOTAL Insertions: 5 Deletions: 12 Substitutions: 30
//DENOISE, threshold 0.1
TOTAL Words: 111 Correct: 77 Errors: 41
TOTAL Percent correct = 69.37% Error = 36.94% Accuracy = 63.06%
TOTAL Insertions: 7 Deletions: 3 Substitutions: 31
//DENOISE, threshold 0.21
TOTAL Words: 111 Correct: 80 Errors: 38
TOTAL Percent correct = 72.07% Error = 34.23% Accuracy = 65.77%
TOTAL Insertions: 7 Deletions: 3 Substitutions: 28
我所做的那些处理只是为了测试数据。是否应以相同的方式处理培训数据?我想我试过了,但几乎没有什么不同。
11)在所有这些测试中,我使用了ARPA语言模型。当使用JGSF时,结果通常会差很多(我有最新的Pocketsphinx分支)。为什么?
12)因为每个句子的最大数量是“999”并且不超过3个名字,所以我修改了JSGF并通过手动重复括号中的内容来替换重复符号“”。这次的结果更接近ARPA。语法中有没有办法像正则表达式一样告诉最大重复次数?
13)当使用ARPA模型时,我通过使用所有可能的组合生成它(因为字典是固定的并且非常小:约15个单词),但随后测试我仍然收到有时非法的结果,例如Tom Anna(没有任何所需的数字)。有没有办法使用ARPA模型强制执行一些结构?
14)字典应该仅限于那些~15个单词还是只是完整的字典只会影响速度而不会影响性能?
15)修改字典(音素)是提高耳语识别能力的方法吗?(我不是专家,但当我们耳语时,我想有些单词听起来可能会不同?)
16) 任何其他如何提高准确性的提示都会非常有用!
关于耳语:当你这样做时,声波没有有意义的非周期部分(声带正常共振产生的振动,但耳语时不会)。你可以试着把手指放在喉咙上,同时大声说“aaaaa”,然后轻声说出来。
AFAIR声学建模在很大程度上依赖于提取声音的频谱来检测峰值(共振峰),并将其与手机(如元音)联系起来。
有根据的猜测:耳语时,频谱主要是白噪声,略微受到口腔位置(舌头、嘴巴张开等)的影响,这对人类来说足够了,但远不足以让计算机区分窥视。
我想使用有线耳机作为的音频源。我阅读了诸如Android之类的问题 - 通过听筒播放音频和Android - 从听筒播放音频。最后我来: 但这不起作用。蓝牙耳机使用方法解决的问题 我没有找到替代< code > audio manager . startbluetoothsco();适用于有线耳机。能否将< code>SpeechRecognizer与有线耳机结合使用?
我听一个热门单词,并使用MediaPlayer播放一些音乐。 在播放音乐的同时继续收听下一个命令,并做出相应的反应。 该应用程序运行良好,音乐可以通过蓝牙耳机播放,语音也可以同时识别,但它总是使用手机的麦克风。即使蓝牙耳机连接或没有连接,它仍然使用手机的麦克风。 我试着用: 这让我觉得这是可能的但我不知道怎么做。 请帮帮我。提前谢了。
我正在为嵌入式设备的语音相关语音识别解决方案寻找解决方案。我已经研究过Pocketsphinx,但由于我仍然不熟悉它,我想也许更有经验的人可能会知道。是否有可能使用Pocketsphinx来实现这样的语音识别。它应该记录音频,提取其特征,然后将其与所说的任何内容进行匹配,而不是使用声学和语言模型。是否有可能使用Pocketsphinx实现此流程?如果没有,有人能为这样的解决方案指出正确的方向吗?谢
由于连接到不同的API,我目前正在开发一个工具,允许我阅读所有的通知。 它工作得很好,但现在我想用一些声音命令来做一些动作。 就像当软件说“一封来自Bob的邮件”时,我想说“阅读”或“存档”。 我的软件是通过一个节点服务器运行的,目前我没有任何浏览器实现,但它可以是一个计划。 在NodeJS中,启用语音到文本的最佳方式是什么? 我在它上面看到了很多线程,但主要是使用浏览器,如果可能的话,我希望在一
语音识别是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术,语音技术的应用已经成为一个具有竞争性的新兴高技术产
识别简单的语句。