谁能推荐一种可靠的开源软件来把英语语音转录成wav文件?我研究过的两个主要程序是Sphinx和Julius,但我从来没能让这两个程序工作,而且每个程序关于转录文件的文档充其量是粗略的。
我正在64位Ubuntu 10.04上开发,它的repos包括sphinx2和julius,以及voxforge的julius声学模态英语。我专注于转录文件,而不是直接处理来自麦克风的声音,因为我已经放弃了期望这样的项目与Ubuntu的声音系统一起工作。这不是对Ubuntu的攻击,因为我可以用Audacity完美地用我的麦克风录制声音,但是两个系统似乎都无法访问我的麦克风,所以我希望我可以通过从文件中读取它们的配置来简单地完成。
我首先尝试了Sphinx2,来自Ubuntu软件包Sphinx2 -bin。尽管样例sphinx2-demo似乎可以转录文件,但实际上没有关于配置的文档,因此我不确定如何自定义它以从任意格式读取。演示中使用的音频文件是一些未记录的"16k"格式,通过2个配置文件间接引用。有一个简短的介绍将sphinx2-demo描述为运行sphinx2-batch,但是检查脚本会发现它实际上在调用sphinx2-continuous。更糟糕的是,每个脚本的help文档列出了大约6打选项,并且没有提到哪些是必需的或可选的。总的来说,sphinx文档的缺乏以及现有文档的低质量都快把我逼疯了。
我接下来尝试了Julius,还是来自Ubuntu包,它是最近的(4.1),考虑到Voxforge的快速入门使用的版本是3.5。这个包似乎包含了稍微好一点的文档,甚至还有一个用Python写的例子(/usr/share/doc/julius-voxforge/examples/controlapp)。在阅读了示例的文档之后,我尝试通过创建一个包含文本"hello.wav"的文件filelist.txt
来调整它以从文件中读取,该文件引用了同名文件,其中包含某人说"hello"的记录。将它们放在同一个目录中,我运行:
julius -input file -filelist filelist.txt -C julian.jconf
获取响应:
### read waveform input
Error: adin_file: sampling rate != 16000 (8000)
Error: adin_file: error in parsing wav header at hello.wav
Error: adin_file: failed to read speech data: "hello.wav"
0 files processed
通过为fillist .txt和hello.wav指定绝对文件名重新尝试会产生相同的错误。
我还尝试了示例中使用的Julius呼叫,直接从麦克风录制:
julius -input mic -C julian.jconf
我调用了几次,响应在以下错误之间变化:
Cannot read /dev/dsp
:
STAT: AD-in thread created
<<< please speak >>>
在后一种情况下,不管我对着麦克风说什么,什么也没发生。我不知道它是否仍然无法读取麦克风,或者它是否正在读取某些内容,但只是无法转录音频。
我不知道这是怎么回事。我得到的错误并没有给我留下太多的线索。为什么它不能读波?为什么不能读取/dev/dsp?为什么它似乎能够读取/dev/dsp,但不以任何方式作出反应?
有其他人有任何成功的开源语音识别器,特别是在Linux上吗?
为什么它不能读取波?
它告诉你文件有错误的采样率(8000)而不是请求的(16000)。采样率对语音识别软件非常重要。
为什么不能读取/dev/dsp?
在最近的Ubuntu版本中,使用了pulseaudio框架而不是OSS。你正在使用的版本是OSS,所以你需要从你的发行版中安装一个兼容OSS的包来恢复对OSS的支持。
你可以尝试更新的Julius,它有脉冲音频支持
为什么它似乎能够读取/dev/dsp,但没有任何反应?
音频输入不正常
有没有其他人在开源语音识别器上取得过成功?特别是在Linux上?
当然,看看这个视频,看看人们是怎么处理CMUSphinx的:
http://www.youtube.com/watch?v=vfaNLIowSyk我建议您重新访问CMUSphinx包,这是一个领先的开源语音识别引擎。网站上有大量的文件,你只需要阅读它们。记住,语音识别是一个复杂的领域,你可以得到很好的结果,但你也需要投入时间来理解这项技术。就像其他域一样。
简而言之,要使用CMUSPhinx转录文件,您需要执行以下3个简单步骤:
- 取wav文件并重新采样到8khz 16位单声道文件与sox:
sox input.wav -r 8000 -c 1 resampled.wav
- 安装pocketsphinx 0.7
- 解码文件
安装pocketsphinx
pocketsphinx_continuous -samprate 8000 -infile resample .wav
结果将被打印到标准输出。要抑制日志记录器,将stderr重定向添加到/dev/null
pocketsphinx_continuous -infile resample .wav 2>/dev/null