用于在音频文件中转录语音的开源软件

时间:2011-09-30 16:06:44

标签: java python speech-recognition speech-to-text cmusphinx

有人可以推荐可靠的开源软件来转录wav文件中的英文语音吗?我研究过的两个主要程序是SphinxJulius,但是我从来没有能够开始工作,每个转录文件的文档都是粗略的。

我正在开发64位Ubuntu 10.04,其回购包括sphinx2和julius,以及voxforge的julius英语声学模式。我专注于转录文件,而不是直接处理来自麦克风的声音,因为我已经放弃了期望像这样的项目与Ubuntu的音响系统一起工作。这不是对Ubuntu的打击,因为我可以使用Audacity完美地录制我的麦克风声音,但两个系统似乎都无法访问我的麦克风,所以我希望我只需通过读取文件就可以简单地进行配置。

我首先尝试使用Ubuntu软件包sphinx2-bin中的Sphinx2。尽管示例sphinx2-demo似乎可以用于转录文件,但实际上没有关于配置的文档,所以我不确定如何自定义这个以从任意wav读取。演示中使用的音频文件采用一些未记录的“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)。在阅读了示例的文档之后,我尝试通过创建一个文件filelist.txt来调整它来读取文件,该文件包含引用同名文件的文本“hello.wav”,其中包含有人说“你好”的录音。把它们放在同一个目录中,我跑了:

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

通过为filelist.txt和hello.wav指定绝对文件名进行重试会产生相同的错误。

我还尝试了示例中使用的Julius调用,直接从麦克风录制:

julius -input mic -C julian.jconf

我多次打电话,错误之间的反应不同:

Cannot read /dev/dsp

STAT: AD-in thread created
<<< please speak >>>

在后一种情况下,无论我对麦克风说什么,都没有任何反应。我不知道它是否仍然无法读取麦克风,或者是否正在阅读某些内容,但是根本无法录制音频。

我不知道该怎么做。我得到的错误并没有给我留下太多的意思。为什么不能读取wav?为什么不能读取/ dev / dsp?为什么它似乎能够读取/ dev / dsp,但不以任何方式作出反应?

有没有其他人使用开源语音识别器取得任何成功,尤其是在Linux上?

1 个答案:

答案 0 :(得分:14)

  

为什么不能读取wav?

它告诉您文件的采样率(8000)而不是请求(16000)。采样率对语音识别软件非常重要。

  

为什么不能读取/ dev / dsp?

在最新版本的Ubuntu中,使用pulseaudio框架代替OSS。您正在尝试的版本是使用OSS,因此您需要从您的发行版安装oss兼容包,以恢复OSS支持。

您可以尝试更新的具有pulseaudio支持的Julius

  

为什么它似乎能够读取/ dev / dsp,但不会以任何方式做出反应?

音频输入无法正常工作。

  

有没有其他人在开源语音识别器方面取得任何成功,   特别是在Linux上?

当然,请查看此视频,了解人们如何处理CMUSphinx:

http://www.youtube.com/watch?v=vfaNLIowSyk

我建议你重新访问CMUSphinx软件包,这是一个领先的开源语音识别引擎。网站上有大量文档,您只需要阅读它们即可。请记住,语音识别是一个复杂的领域,您可以获得很好的结果,但您还需要投入时间来理解技术。就像任何其他域一样。

简而言之,要使用CMUSPhinx转录文件,您需要执行以下3个简单步骤:

  1. 获取wav文件并使用sox将其重新采样为8khz 16位单声道文件:
  2.     sox input.wav -r 8000 -c 1 resampled.wav
    1. 安装pocketsphinx 0.7
    2.    apt-get install pocketsphinx
      1. 解码文件
      2.     pocketsphinx_continuous -samprate 8000 -infile resampled.wav

        结果将打印到标准输出。要压缩记录器,请将stderr重定向添加到/ dev / null

            pocketsphinx_continuous -infile resampled.wav 2> /dev/null
相关问题