是否可以直接从内存中播放音频?
Would it be possible to play an audio directly from memory?
我目前正在使用 Microsoft TTS,我获取流式音频,保存到文件中,然后将命令发送到 "Stream File" 中的 Asterisk。关注:
....
response = requests.post(url, data=body, headers=headers)
self.print("Got wave response")
with open("{}{}.{}".format(cachedir, filename, self.exten), 'wb') as fd:
for chunk in response.iter_content(chunk_size=1024):
self.print("Gravando....")
fd.write(chunk)
fd.close()
self.agi.stream_file('{}{}'.format(cachedir, filename))
我会避免在本地写入文件的需要,发送二进制文件直接播放。或者甚至写入文件,在第一个流媒体包中强制启动。我尝试执行最后一个想法,但我收到一个 Asterisk 警报,指出该文件为零字节。
有什么建议吗?
这取决于OS如何处理文件。
在大多数情况下,您可以使用 linux 管道,但您仍然需要 asterisk 正确地使用它,这不是微不足道的,需要很高的专业知识。
简单的方法就是将文件分成小部分,例如1秒的片段,然后一个一个地播放星号。
或者每次写入后直接使用os.fsync(),但是会更难维护。
https://www.tutorialspoint.com/python/os_fsync.htm
我目前正在使用 Microsoft TTS,我获取流式音频,保存到文件中,然后将命令发送到 "Stream File" 中的 Asterisk。关注:
....
response = requests.post(url, data=body, headers=headers)
self.print("Got wave response")
with open("{}{}.{}".format(cachedir, filename, self.exten), 'wb') as fd:
for chunk in response.iter_content(chunk_size=1024):
self.print("Gravando....")
fd.write(chunk)
fd.close()
self.agi.stream_file('{}{}'.format(cachedir, filename))
我会避免在本地写入文件的需要,发送二进制文件直接播放。或者甚至写入文件,在第一个流媒体包中强制启动。我尝试执行最后一个想法,但我收到一个 Asterisk 警报,指出该文件为零字节。
有什么建议吗?
这取决于OS如何处理文件。
在大多数情况下,您可以使用 linux 管道,但您仍然需要 asterisk 正确地使用它,这不是微不足道的,需要很高的专业知识。
简单的方法就是将文件分成小部分,例如1秒的片段,然后一个一个地播放星号。
或者每次写入后直接使用os.fsync(),但是会更难维护。 https://www.tutorialspoint.com/python/os_fsync.htm