我当前正在使用Microsoft TTS,我获得流音频,保存到文件,然后将命令发送到"流文件"中的星号。关注:
....
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))
我将避免在本地编写文件,将二进制文件直接播放。甚至写入文件,在第一个流媒体包中强制启动。我试图做这个最后一个想法,但是我得到了一个星号警报,指出文件为零字节。
任何建议?
这取决于OS如何处理文件。
在大多数情况下,您可以使用Linux管道,但是您仍然需要使用星号,这不是微不足道的,需要高的专业知识。
简单的方式只是在小部分中拆分文件,例如1秒的片段,然后在一对一的星号上播放。
或仅使用 os.fsync()每次写入后,但是很难维护。https://www.tutorialspoint.com/python/os_fsync.htm