我使用Twilio流向本地服务器传送呼叫音频。作为参考,我借鉴了来自Twilio团队的官方指南。
解码音频并将其保存到.wav文件中是有效的,尽管当播放音频时有些不舒服(使用压缩技巧的“慢动作”)。你可以在这里的声音云上听它。与来自twilio控制台的twilio提供的音频记录进行相同的调用相比,存在着明显的差异。现在,我想让流中的音频听起来像理想的一样好,因为我需要将它输入自定义的ML模型。
当使用以下代码比较上述音频文件时:
import pywav
wave_read = pywav.WavRead("filename.wav")
print(wave_read.getparams())我们得到:
Twilio音频: {'numchannels':1,'samplerate':8000个,'byterate':16000,'bytespersample':2,'bitspersample':16,'samplelength':82998,'audioformat':'PCM (无压缩)‘}}
流音频: {'numchannels':1,'samplerate':8000个,'byterate':16000,'bytespersample':2,'bitspersample':16,'samplelength':69120,'audioformat':'PCMU (带mu-law压缩)‘}}
我相当肯定,问题在于如何将解码的字节从流保存到文件中。
if data['event'] == "media":
if not has_seen_media:
recorded.append(base64.b64decode(data['media']['payload']))
app.logger.info("Media message: {}".format(message))
payload = data['media']['payload']
app.logger.info("Payload is: {}".format(payload))
chunk = base64.b64decode(payload)
recorded.append(chunk)
app.logger.info("That's {} bytes".format(len(chunk)))
app.logger.info("Additional media messages from WebSocket are being suppressed....")
has_seen_media = False
if data['event'] == "closed":
app.logger.info("Closed Message received: {}".format(message))
break
message_count += 1
app.logger.info("Connection closed. Received a total of {} messages".format(message_count))
data_bytes = b''.join(recorded)
wave_write = pywav.WavWrite("Recording.wav", 1,8000,8,7) # 1 stands for mono channel, 8000 sample rate, 8 bit, 7 stands for MULAW encoding
wave_write.write(data_bytes)
wave_write.close()注意:我已经将WavWrite函数中的位从8位更改为16位,音频质量没有差别。
我看过从这个以前在StackOverflow上的文章实现代码片段的方法。虽然没有成功。
如何提高保存的音频文件的质量?(最好在python中)。
发布于 2022-08-20 01:58:08
我想我知道问题出在哪里。在循环中,将解码后的音频添加到有效负载数组中两次:
recorded.append(base64.b64decode(data['media']['payload'])) # <<< Adding the payload for the first time
app.logger.info("Media message: {}".format(message))
payload = data['media']['payload']
app.logger.info("Payload is: {}".format(payload))
chunk = base64.b64decode(payload)
recorded.append(chunk) # <<< Adding the payload for the second time如果你听音频,它是缓慢的,因为它似乎是重复每个块。如果你剪掉上面的一条线,我想你会有正确的声音。
https://stackoverflow.com/questions/73419246
复制相似问题