当一个人说话时,识别片段吗? [英] Identifying segments when a person is speaking?
问题描述
有谁知道一个(最好是C#.Net)库,可以让我在语音录音中定位特定人发言的片段?
推荐答案
工具包可以喊出:http://shout-toolkit.sourceforge.net/index.html
它是用C++编写的,并在Linux上进行了测试,但它也应该可以在Windows或OSX上运行。
该工具包是我在自动语音识别(ASR)博士研究中的副产品。将它用于ASR本身可能不是那么简单,但对于语音活动检测(SAD)和二值化(查找一个特定人的所有语音)来说,它非常容易使用。下面是一个例子:
创建16 KHz、16位、小端、单声道的无头pcm音频文件。我使用ffmpeg创建原始文件:ffmpeg-i[INPUT_FILE]-vn-acodec pcm_s16le-ar 16000-ac 1-f s16le[RAW_FILE]在无标题数据前面加上很小的端序编码文件大小(4字节)。请确保文件的扩展名为.raw,因为shout_cluster会根据扩展名检测文件类型。
语音/非语音切分: ./shout_Segment-a[RAW_FILE]-AMS[SHOUT_SAD_MODEL]-mo[SAD_OUTPUT] 输出文件将为您提供某人正在发言的片段(标记为"Speech")。当然,因为这都是自动完成的,系统可能会出错..),其中存在非语音("声音")或沉默("静音")的声音。
执行二值化: ./shout_cluster-a[RAW_FILE]-mo[二元化输出]-mi[SAD_输出] 使用Shout_Segment的输出,它将尝试确定录音中有多少说话者处于活动状态,给每个说话者贴上标签("SPK01"、"SPK02"等),然后找出每个说话者的所有语音片段。
我希望这会有帮助!
这篇关于当一个人说话时,识别片段吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!