python-3.x - 语音事件检测

标签 python-3.x numpy audio speech-recognition librosa

尝试在波形格式音频文件中使用webrctvad获得二进制结果时遇到问题。我使用librosa以便以.wav格式加载音频文件。谁能告诉我如何结合使用librosa和webrtcvad来获取音频是否包含语音的二进制输出?

Webrtcvad module works correctly with the wave module

上面的链接对我有很大帮助,但是仍然很困惑,因为该链接包含了很好的解释,但是在实现过程中会出现很多错误。

最佳答案

py-webrtcvad期望音频数据为16位PCM little-endian,这是WAV文件中最常见的存储格式。
librosa及其底层I / O库pysoundfile始终返回[-1.0, 1.0]范围内的浮点数组。要将其转换为包含16位PCM的字节,可以使用以下float_to_pcm16函数。

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

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

关于python-3.x - 语音事件检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61777371/

相关文章:

arrays - 使用字段名称进行索引时,结构化数组会删除字段标题

python - NumPy 。将一个数组中的所有向量行与同一数组中的所有其他向量行进行比较

python - 在 scipy python 中使用 UnivariateSpline 拟合数据

actionscript-3 - ActionScript 播放音频

java - 从麦克风录制的声音的音量

python - 在 python 中使用列表中的 3 个元素找到可形成的最大乘积?

python - 请您解释一下这段代码,特别是第 8 行;里面有循环的那个?

python - *** ValueError : invalid literal for int() with base 10: '#'

python - 类型错误 : Arrays must have consistent types in assignment

audio - 版本3 AudioUnits:internalRenderBlock中的最小frameCount