在一个人说话时识别段?

时间:2011-11-27 10:33:22

标签: speech-recognition

有没有人知道(最好是C#.Net)图书馆,它可以让我在录音中找到特定人士所说的那些片段?

2 个答案:

答案 0 :(得分:20)

可以使用工具包SHoUT:http://shout-toolkit.sourceforge.net/index.html

它是用C ++编写的,并针对Linux进行了测试,但它也应该在Windows或OSX下运行。

该工具包是我自动语音识别(ASR)博士研究的副产品。将它用于ASR本身可能不是那么简单,但对于语音活动检测(SAD)和语言化(找到一个特定人的所有语音),它很容易使用。这是一个例子:

  1. 创建一个16KHz,16bits,little-endian,mono的无头pcm音频文件。我使用ffmpeg来创建原始文件: ffmpeg -i [INPUT_FILE] -vn -acodec pcm_s16le -ar 16000 -ac 1 -f s16le [RAW_FILE] 以小端编码文件大小前缀无头数据( 4字节)。确保文件具有.raw扩展名,因为shout_cluster会根据扩展名检测文件类型。

  2. 执行语音/非语音分段: ./ shout_segment -a [RAW_FILE] -ams [SHOUT_SAD_MODEL] -mo [SAD_OUTPUT] 输出文件将为您提供某人正在讲话的片段(标有“SPEECH”。当然,因为它全部自动完成,系统可能会出错...),其中有声音不是语音(“声音“),或沉默(”沉默“)。

  3. 执行diarization: ./ shout_cluster -a [RAW_FILE] -mo [DIARIZATION_OUTPUT] -mi [SAD_OUTPUT] 使用shout_segment的输出,它将尝试确定录音中有多少个扬声器,标记每个扬声器(“SPK01”,“SPK02”等),然后查找每个扬声器的所有语音段。

  4. 我希望这会有所帮助!

答案 1 :(得分:2)

虽然上面的答案是准确的,但我在安装SHoUT时对Linux上的安装问题进行了更新。我发现解决方案undefined reference to pthread_join是从SHoUT安装zip打开 configure-make.sh 并修改该行

CXXFLAGS="-O3 -funroll-loops -mfpmath=sse -msse -msse2" LDFLAGS="-lpthread" ../configure

CXXFLAGS="-O3 -funroll-loops -mfpmath=sse -msse -msse2" LDFLAGS="-pthread" ../configure

注意 lpthread 在Linux系统上更改为 pthread

OS:Linux Mint 18 SHoUT版本:release-2010-version-0-3