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

2024-05-21 10:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在开发64位的Ubuntu10.04,它的repos包括sphinx2和julius,以及voxforge的julius acoustic model for English。我专注于转录文件,而不是直接处理来自麦克风的声音,因为我已经放弃了期望像这样的项目能与Ubuntu的声音系统一起工作。这并不是对Ubuntu的攻击,因为我可以用我的麦克风完美地使用Audacity录制声音,但是两个系统似乎都无法访问我的麦克风,所以我希望我可以通过读取文件来简单地配置它们。

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

接下来我又尝试了Julius,这是Ubuntu包中的一个版本,考虑到Voxforge的quickstart中使用的版本是3.5,这是一个出人意料的新版本(4.1)。这个包似乎包含了一些更好的文档,甚至是一个用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上?


Tags: 文件文档版本txt声音示例helloinput
1条回答
网友
1楼 · 发布于 2024-05-21 10:34:03

Why can't it read a wav?

它告诉您文件的采样率(8000)错误,而不是请求的采样率(16000)。采样率是语音识别软件的重要组成部分。

Why can't it read /dev/dsp?

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

你可以试试有pulseaudio支持的新的Julius

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?

当然,请查看此视频,作为人们使用cmusphenx的示例:

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

我建议您重新访问cmusphenx包,它是一个领先的开源语音识别引擎。网站上有很多文件,你只需要看看就行了。请记住,语音识别是一个复杂的领域,在那里你可以得到很好的结果,但你也需要投入你的时间来了解技术。就像其他领域一样。

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

  1. 获取wav文件并使用sox将其重新采样到8khz 16位单声道文件:
    sox input.wav -r 8000 -c 1 resampled.wav
  1. 安装Pocketshinx 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

相关问题 更多 >