【发布时间】:2019-12-30 17:34:25
【问题描述】:
我在 python 中做一个 VoIP 软件,我尝试重新创建一个特定的业余无线电程序协议,它使用 GSM 音频编解码器。 由于 python 没有简单的方法来播放 gsm 文件,但是我设法至少用它转换了一个文件,所以我知道这是可能的。
我使用网络流中的 myfile.write(data3) 在硬盘驱动器上写入 .gsm 文件。 然后我使用 pysoundfile 将其转换为 wav 文件
data, samplerate = sf.read('temppi.gsm')
sf.write('temppi.wav', data, samplerate)
之后我可以用 pyaudio 播放它。它提供了巨大的延迟,它需要在音频包进入后才运行..
我的问题是如何直接使用声音文件从流中播放文件?我试图搜索谷歌只是关于转换文件,没有办法直接播放它吗?任何建议我能做什么。谢谢,新年快乐:)
编辑: 现在我有它,但这很糟糕..它会发出很多分块声音
here we start thread aaniulos
if ekabitti == b'\x01':
dataaa = self.socket.recv(198)
data3 = io.BytesIO(bytes(dataaa))
while True:
global aani
#global data3
if aani:
print ('Ääni saije lopetetaan..')
break
data, samplerate = sf.read(io.BytesIO(bytes(data3.getbuffer())), format = 'RAW', channels = 1, samplerate=8000, dtype ='int16', subtype='GSM610', endian ='FILE')
virtuaalifilu = io.BytesIO()
sf.write (virtuaalifilu, data, 8000, format='wav', subtype= 'PCM_16')
sound_file = io.BytesIO(bytes(virtuaalifilu.getbuffer()))
print ('striimataan ääntä nyt kaijuttimiin!!!')
stream.stop_stream()
stream.close()
return
【问题讨论】: