|
|
@@ -1,6 +1,7 @@
|
|
|
import argparse
|
|
|
import base64
|
|
|
import json
|
|
|
+import wave
|
|
|
from pathlib import Path
|
|
|
|
|
|
import pyaudio
|
|
|
@@ -129,12 +130,27 @@ if __name__ == "__main__":
|
|
|
stream = p.open(
|
|
|
format=audio_format, channels=args.channels, rate=args.rate, output=True
|
|
|
)
|
|
|
- for chunk in response.iter_content(chunk_size=1024):
|
|
|
- if chunk:
|
|
|
- stream.write(chunk)
|
|
|
- stream.stop_stream()
|
|
|
- stream.close()
|
|
|
- p.terminate()
|
|
|
+
|
|
|
+ wf = wave.open("generated_audio.wav", "wb")
|
|
|
+ wf.setnchannels(args.channels)
|
|
|
+ wf.setsampwidth(p.get_sample_size(audio_format))
|
|
|
+ wf.setframerate(args.rate)
|
|
|
+
|
|
|
+ stream_stopped_flag = False
|
|
|
+
|
|
|
+ try:
|
|
|
+ for chunk in response.iter_content(chunk_size=1024):
|
|
|
+ if chunk:
|
|
|
+ stream.write(chunk)
|
|
|
+ wf.writeframesraw(chunk)
|
|
|
+ else:
|
|
|
+ if not stream_stopped_flag:
|
|
|
+ stream.stop_stream()
|
|
|
+ stream_stopped_flag = True
|
|
|
+ finally:
|
|
|
+ stream.close()
|
|
|
+ p.terminate()
|
|
|
+ wf.close()
|
|
|
else:
|
|
|
audio_content = response.content
|
|
|
|