Spaces:
Runtime error
Runtime error
| import requests | |
| import json | |
| import base64 | |
| import io | |
| import sounddevice as sd | |
| import soundfile as sf | |
| # API 地址 | |
| url = "http://127.0.0.1:8000/synthesize" | |
| # 请求体 | |
| payload = {"text": "Hello, world!"} | |
| # 请求头 | |
| headers = {"Content-Type": "application/json"} | |
| # 发送 POST 请求 | |
| try: | |
| print("Sending request to the API...") | |
| response = requests.post(url, data=json.dumps(payload), headers=headers) | |
| response.raise_for_status() # 检查请求是否成功 | |
| result = response.json() | |
| print("Response received.") | |
| # 检查返回的音频数据 | |
| if "audio" in result: | |
| print("Audio data received as Base64.") | |
| # 解码 Base64 音频数据 | |
| audio_base64 = result["audio"] | |
| audio_bytes = base64.b64decode(audio_base64) | |
| # 使用 soundfile 直接从内存中读取音频数据 | |
| try: | |
| audio_data, samplerate = sf.read(io.BytesIO(audio_bytes)) | |
| print(f"Playing audio (sample rate: {samplerate} Hz)...") | |
| sd.play(audio_data, samplerate) | |
| sd.wait() # 等待播放完成 | |
| print("Audio playback finished.") | |
| except sf.LibsndfileError as e: | |
| print(f"Error reading audio data: {e}") | |
| else: | |
| print("Unexpected response format. No audio data found.") | |
| except requests.exceptions.RequestException as e: | |
| print(f"Request failed: {e}") | |
| except Exception as e: | |
| print(f"An error occurred: {e}") |