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

任何人都可以推荐可靠的开源软件来转录wav文件中的英语语音吗?我研究过的两个主要程序是SphinxJulius,但我从未能够让它们都工作,并且每个关于转录文件的文档充其量是粗略的。

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

我第一次尝试了Sphinx2,来自Ubuntu软件包sphinx2-bin。尽管示例sphinx2演示似乎可以转录文件,但实际上没有关于配置的文档,所以我不确定如何自定义它以从任意wav读取。演示中使用的音频文件是一些未记录的“16k”格式,通过2个配置文件间接引用。有一个简短的简介将sphinx2-demo描述为运行sphinx2-batch,但检查脚本显示它实际上称sphinx2-continuous。更糟糕的是,每个脚本的 --help 文档列出了大约 6 打选项,并且没有提到哪些是必需的或可选的。总的来说,缺乏狮身人面像文档,以及现有文档的质量差,让我发疯。

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

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

为什么它不能读一个wav?

它告诉您文件具有错误的采样率 (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个简单步骤:

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

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

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

答案 2