首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语音活动检测

语音活动检测
EN

Stack Overflow用户
提问于 2020-05-13 14:33:32
回答 1查看 1.5K关注 0票数 1

在使用波形格式音频文件中的webrctvad获取二进制结果时,我遇到了一个问题。我使用librosa来加载.wav格式的音频文件。有人能告诉我如何使用librosa和webrtcvad来获得音频是否包含语音的二进制输出吗?

Webrtcvad模块与波形模块正确工作。

上面的链接帮助了我很多,但我仍然感到困惑,因为这个链接包含了一个很好的解释,但是在实现过程中出现了很多错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-16 11:28:15

皮韦特瓦德,期望音频数据是16位PCM小端-因为这是最常见的存储格式在WAV文件。

然而,librosa及其底层I/O库pysoundfile总是返回范围[-1.0, 1.0]中的浮点数组。若要将此转换为包含16位PCM的字节,可以使用以下float_to_pcm16函数。

我已经测试过使用read_pcm16函数,这是read_wave在官方py-webrtcvad示例中的直接替代。但允许打开任何音频文件支持的声音文件(WAV,FLAC,OGG)等。

代码语言:javascript
复制
def float_to_pcm16(audio):
    import numpy

    ints = (audio * 32767).astype(numpy.int16)
    little_endian = ints.astype('<u2')
    buf = little_endian.tostring()
    return buf


def read_pcm16(path):
    import soundfile

    audio, sample_rate = soundfile.read(path)
    assert sample_rate in (8000, 16000, 32000, 48000)
    pcm_data = float_to_pcm16(audio)
    return pcm_data, sample_rate
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61777371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档