语音的帧长问题

Viewed 37

期待结果和实际结果

我希望实现ai的语音唤醒,通过api调用实现语音交互

软硬件版本信息

使用yahboom制作的k230开发板

错误日志

由于pyaudio不可重复初始化,关键词录入kws_income_stream帧长固定为kws_chunk,与输出音频的帧长不同,扬声器播放音频时发出“砰砰”的电子音

尝试解决过程

KWS_input_stream = self.p.open(format=self.FORMAT,# 打开输入音频流,配置格式、通道数、采样率等参数
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=KWS_CHUNK)
KWS_input_stream.volume(vol = 100)

KWS_output_stream = self.p.open(format=self.FORMAT, # 打开输出音频流,配置格式、通道数、采样率等参数
channels=self.CHANNELS,
rate=self.RATE,
output=True,
frames_per_buffer=self.CHUNK)

#KWS_CHUNK设置为self.CHUNK,无法检测人声
补充材料

KWS_CHUNK = int(0.3 * 16000) # 每次读取音频数据的帧数,设置为0.3秒的帧数
self.RATE = 16000
self.CHUNK = self.RATE // 25 # 每个缓冲区的帧数 / Frames per buffer

我想问的核心就是关键词检测的程序中,语音输入流的帧长是不是固定为int(0.3 * 16000),如果程序运行中,音频通道想要更改,该如何更改

1 Answers

由于模型的输入要求,输入流的帧长被限定为固定值,无法进行调整。不过,音频的输入输出参数具备灵活的可调节性。因此,为了使整个系统达到适配状态,建议对音频输入输出参数进行相应调整,从而契合模型所要求的固定帧长输入。可参照:https://www.kendryte.com/k230_canmv/zh/main/zh/example/media/audio.html 修改。