2011-09-30 56 views
18

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

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

我第一次尝试了Sphinx2,从Ubuntu包sphinx2-bin。尽管示例sphinx2-demo似乎可以在转录文件时使用,但实际上没有关于配置的文档,所以我不确定如何定制这个以从任意wav中读取。演示中使用的音频文件有一些未公开的“16k”格式,它通过2个配置文件间接引用。有一段简短的介绍将sphinx2-demo描述为运行sphinx2-batch,但检查脚本显示它实际上调用了sphinx2-continuous。更糟糕的是,每个脚本列表的--help文档大约有六十个选项,并没有提及哪些是必需的或可选的。总体而言,狮身人面像文档的缺乏以及现有文档的质量差,让我感到非常紧张。

接下来我再次尝试了来自Ubuntu软件包的Julius,考虑到Voxforge的快速入门中使用的版本是3.5,令人惊讶的是最近(4.1)。该软件包似乎包含稍微好一些的文档,甚至是用Python编写的例子(/ usr/share/doc/julius-voxforge/examples/controlapp)。在阅读示例的文档后,我尝试通过创建一个文件filelist.txt来修改它以从文件中读取文件,其中包含文本“hello.wav”,该文件引用同名文件,其中包含某人的“你好”的录音。在同一目录中放置这些,我跑:通过指定Filelist.txt中绝对的文件名

### 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 

重试和hello.wav产生了同样的错误:

julius -input file -filelist filelist.txt -C julian.jconf 

得到响应。

我还试图在示例中使用的朱利呼叫,直接从一个话筒记录:

julius -input mic -C julian.jconf 

我称这几次,和误差之间的响应变化:

Cannot read /dev/dsp 

和:

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

在后面的例子中,不管我对麦克风说什么,都没有任何反应。我不知道它是否仍然无法读取麦克风,或者它是否正在读取某些内容,但无法录制音频。

我不知道该怎么做。我遇到的错误不会让我继续前进。为什么不能读取wav?为什么不能读取/ dev/dsp?为什么它似乎能够读取/ dev/dsp,但没有任何反应?

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

回答

14

Why can't it read a wav?

它告诉你文件有错误的采样率(8000)而不是请求的(16000)。采样率对于语音识别软件来说非常重要。

Why can't it read /dev/dsp?

在最近的版本中,使用了ubuntu pulseaudio框架来代替OSS。您尝试使用的版本正在使用OSS,因此您需要从您的发行版中安装oss兼容性软件包以恢复OSS支持。

你可以尝试新的朱利叶斯拥有的PulseAudio支持

Why does it then appear to be able to read /dev/dsp, but not react in any way?

音频输入不能正常工作。

Has anyone else had any success with open source speech recognizers, especially on Linux?

当然,检查该视频作为什么人CMUSphinx做一个例子:

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

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

总之,抄写与CMUSPhinx你需要做以下3个简单的步骤文件:

  1. 采取wav文件,并重新取样,以8kHz的16位单声道文件,SOX:
 sox input.wav -r 8000 -c 1 resampled.wav
  • 安装pocketsphinx 0.7
  •  apt-get install pocketsphinx
  • 解码文件
  •  pocketsphinx_continuous -samprate 8000 -infile resampled.wav

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

     pocketsphinx_continuous -infile resampled.wav 2> /dev/null
    +0

    您从哪里找到用于pocketsphinx 0.7的Ubuntu软件包? 10.04回购只有0.5,这是非常错误,并没有infile参数。 Google只能找到高达0.6的版本。 – Cerin

    +0

    请注意,即使重新采样到正确的速率,Julius也会抱怨每秒字节数!= 32000.不是采样率与每秒字节数相同吗? – Cerin

    +0

    >采样率与每秒字节数相同吗?没有文件需要单声道(单通道也)。 –