一尘不染

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

java

谁能推荐可靠的开源软件来在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文档列出了大约六打选项,并且没有提及哪些是必需的或可选的。总体而言,缺少狮身人面像文档以及现有文档质量不佳使我发疯。

接下来,我再次尝试使用来自Ubuntu软件包的Julius,该软件包是令人惊讶的最新版本(4.1),考虑到Voxforge快速入门中使用的版本是3.5。该软件包似乎包括稍微更好的文档,甚至包括一个用Python编写的示例(/
usr / share / doc / julius-voxforge / examples /
controlapp)。阅读示例的文档后,我尝试通过创建一个filelist.txt包含文本“
hello.wav”的文件来引用该文件,该文件引用了同名文件,其中包含有人说“ 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

通过为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上?


阅读 294

收藏
2020-12-03

共1个答案

一尘不染

为什么看不懂wav?

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

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

在最新版本的Ubuntu中,使用pulseaudio框架代替OSS。您尝试使用的版本正在使用OSS,因此您需要从发行版中安装oss-
compatibility软件包,以重新获得OSS支持。

您可以尝试支持PulseAudio的新版Julius

那么为什么它似乎能够读取/ dev / dsp却没有任何反应呢?

音频输入无法正常工作。

其他人在开源语音识别器上是否取得了成功,尤其是在Linux上?

我建议您重新使用CMUSphinx软件包,它是领先的开源语音识别引擎。网站上有大量文件,您只需要阅读它们即可。请记住,语音识别是一个复杂的领域,您可以在其中获得出色的成绩,但是您还需要花时间在理解技术上。就像其他任何域一样。

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

  1. 提取wav文件,然后用sox将其重采样为8khz 16位单声道文件:

    袜输入.wav -r 8000 -c 1重新采样.wav
    
  2. 安装pocketsphinx 0.7

    apt-get install pocketsphinx

  3. 解码文件

    pocketsphinx_continuous -samprate 8000 -infile resampled.wav
    

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

    pocketsphinx_continuous -infile resampled.wav 2> / dev / null
2020-12-03