【问题标题】:Adafruit I2S MEMS microphone is not working with voice activity detection systemAdafruit I2S MEMS 麦克风无法与语音活动检测系统配合使用
【发布时间】:2022-01-26 21:36:12
【问题描述】:

我正在尝试使用树莓派对文本系统进行演讲。 VAD有很多问题。我正在使用 DeepCpeech 的 VAD 脚本。 Adafruit I2S MEMS 麦克风仅接受 32 位 PCM 音频。所以我修改了脚本以录制 32 位音频,然后将其转换为 16 位以供 DeepSpeech 处理。帧生成和对话部分如下:

for frame in frames:
    if frame is not None:
        if spinner: spinner.start()
        #Get frame generated by PyAudio and Webrtcvad
        dp_frame = np.frombuffer(frame, np.int32)
        #Covert to 16-bit PCM
        dp_frame=(dp_frame>>16).astype(np.int16)
        #Convert speech to text
        stream_context.feedAudioContent(dp_frame)

PyAudio 配置是:

'format': paInt32,
'channels': 1,
'rate': 16000,

当 VAD 启动时,即使周围没有声音,它也会始终生成非空帧。但是当我每 5 秒设置一个计时器时,它表明录制已成功完成。我认为问题在于能量(电压)会增加一些噪音,这就是麦克风无法检测到静音和结束帧生成的原因。如何解决这个问题?

【问题讨论】:

    标签: python raspberry-pi speech-recognition microphone pyaudio


    【解决方案1】:

    我搜索了 DeepCpeech 的 VAD 脚本并找到了它。问题与 webrtcvad 有关。 webrtcvad VAD 仅接受 16 位单声道 PCM 音频,采样频率为 8000、16000、32000 或 48000 Hz。所以需要将32位帧转换为16位(我是关于PyAudio输出帧)来处理webrtcvad.is_speech()。我改了,效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-10
      • 2013-09-18
      • 2018-01-13
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 2015-11-26
      • 2011-09-05
      相关资源
      最近更新 更多