CMUS狮身人面像(六)-调整语音识别准确性

调整语音识别准确性



语音识别的准确性并不总是很高。

首先,重要的是要了解您的准确性是否只是低于预期,还是总体上非常低。如果总体精度非常低,则您很可能错误配置了解码器。如果低于预期,可以采用各种方法来改进。

您应该做的第一件事是收集测试样本数据库并测量识别准确性。您需要将话语转储到 wav 文件中,编写参考文本并使用解码器对其进行解码。然后使用 Sphinxtrain 的工具计算字错误率 (WER) word_align.pl。测试数据库的大小取决于准确性,但通常有 30 分钟的转录音频就足以可靠地测试识别器的准确性。

只有拥有测试数据库,您才能继续优化识别精度。

精度差的原因

精度不佳的主要原因是:

  • 传入音频的采样率和通道数不匹配或传入音频带宽不匹配。它必须是 16 kHz(或 8 kHz,具体取决于训练数据)、16 位 Mono(= 单通道)Little-Endian 文件。您需要通过重采样来修复源的采样率(仅当其采样率高于训练数据的采样率时)。您不应该对文件进行上采样并使用在更高采样率的音频上训练的声学模型对其进行解码。可以使用命令验证音频文件格式(采样率、通道数)

    highlight 复制代码
    sox --i /path/to/audio/file

    在此处查找更多信息: 什么是采样率?

  • 声学模型不匹配。为了验证这个假设,您需要根据测试数据库文本构建一个语言模型。这样的语言模型会非常好,并且一定会给你很高的准确率。如果精度仍然较低,则需要在声学模型上进行更多工作。您可以使用声学模型自适应来提高准确性。

  • 语言模型不匹配。您可以创建自己的语言模型来匹配您尝试解码的词汇。

  • 字典中的不匹配以及单词的发音。在这种情况下,必须在语音词典中完成一些工作。

测试数据库设置

要测试识别,您需要使用所需的参数配置解码,特别是,您需要有一个语言模型<your.lm>。有关更多详细信息,请参阅构建语言模型页面。

创建一个fileids 文件test.fileids

highlight 复制代码
test1
test2

创建转录文件test.transcription

highlight 复制代码
some text (test1)
some text (test2)

将音频文件放入wav文件夹中。确保这些文件具有正确的格式和采样率。

highlight 复制代码
└─ wav
   ├─ test1.wav
   └─ test2.wav

运行测试

现在,让我们运行解码器:

highlight 复制代码
pocketsphinx_batch \
 -adcin yes \
 -cepdir wav \
 -cepext .wav \
 -ctl test.fileids \
 -lm `<your.lm>` \    # for example en-us.lm.bin from pocketsphinx
 -dict `<your.dic>` \ # for example cmudict-en-us.dict from pocketsphinx
 -hmm `<your_hmm>` \  # for example en-us
 -hyp test.hyp

word_align.pl test.transcription test.hyp

word_align.pl脚本是 sphinxtrain 发行版的一部分。

如果您要解码 8 kHz 文件,请务必将该选项添加-samprate 8000到上述命令!

Sphinxtrain 的脚本word-align.pl将向您报告准确的错误率,您可以使用该错误率来确定改编是否适合您。它看起来像这样:

highlight 复制代码
TOTAL Words: 773 Correct: 669 Errors: 121
TOTAL Percent correct = 86.55% Error = 15.65% Accuracy = 84.35%
TOTAL Insertions: 17 Deletions: 11 Substitutions: 93

要查看解码速度,请检查 pocketsphinx 日志,它应该如下所示:

highlight 复制代码
INFO: batch.c(761): 2484510: 9.09 seconds speech, 0.25 seconds CPU, 0.25 seconds wall
INFO: batch.c(763): 2484510: 0.03 xRT (CPU), 0.03 xRT (elapsed)

0.03 xRT解码速度("记录时间的0.03倍")。

相关推荐
小狮子安度因29 分钟前
PyQt的安装和再PyCharm中的配置
ide·pycharm·pyqt
VernonJsn3 小时前
visual studio 2005的MFC各种线程函数之间的调用关系
ide·mfc·visual studio
戎梓漩3 小时前
windows下安装curl,并集成到visual studio
ide·windows·visual studio
endingCode4 小时前
45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
javascript·macos·typescript
dr李四维5 小时前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
soulteary6 小时前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
热爱生活的五柒7 小时前
vscode利用ofExtensions插件可以调试单进程Openfoam,但是不能调试mpi多进程案例
ide·vscode·编辑器
界面开发小八哥7 小时前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
小江村儿的文杰16 小时前
XCode Build时遇到 .entitlements could not be opened 的问题
ide·macos·ue4·xcode
为什么每天的风都这么大16 小时前
Vscode/Code-server无网环境安装通义灵码
ide·vscode·阿里云·编辑器·ai编程·code-server