【问题标题】:Open Source Software For Transcribing Speech in Audio Files用于在音频文件中转录语音的开源软件
【发布时间】:2011-09-30 16:06:44
【问题描述】:

谁能推荐可靠的开源软件来在 wav 文件中转录英语语音?我研究过的两个主要程序是 SphinxJulius,但我从来没有能够让其中任何一个工作,而且每个关于转录文件的文档充其量是粗略的。

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

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

我接下来尝试了 Julius,再次来自 Ubuntu 软件包,考虑到 Voxforge 的快速入门中使用的版本是 3.5,该软件包令人惊讶地是最近的 (4.1)。该软件包似乎包含更好的文档,甚至还有一个用 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

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

【问题讨论】:

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


    【解决方案1】:

    为什么不能读取 wav?

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

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

    在最近的 Ubuntu 版本中,pulseaudio 框架被用来代替 OSS。您正在尝试使用 OSS 的版本,因此您需要从您的发行版中安装 oss-compatibility 包以恢复对 OSS 的支持。

    您可以尝试支持 pulseaudio 的新 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. 安装 pocketsphinx 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

    【讨论】:

    • 您在哪里找到了用于 pocketsphinx 0.7 的 Ubuntu 软件包? 10.04 repo 只有 0.5,这是非常错误的并且没有 infile 参数。我只能通过谷歌找到高达 0.6 的版本。
    • 请注意,即使重新采样到正确的速率,Julius 也会抱怨每秒字节数!= 32000。采样率与每秒字节数不是一回事吗?
    • > 采样率与每秒字节数相同吗?没有文件需要是单声道(单声道)。
    • 字节/样本 * 样本/秒 = 字节/秒。因此,如果您以 8,000 个样本/秒的速度采样 4 个字节/样本(16 位立体声),您将获得 32,000 个字节/秒
    • 请注意,在 Ubuntu 14+ 上,该软件包现在称为 pocketsphinx-utils
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多