This commit is contained in:
2025-08-22 09:55:18 +08:00
parent 6f091b2179
commit 06bc343d38
2 changed files with 150 additions and 80 deletions

View File

@@ -1,80 +0,0 @@
import base64
import uuid
import requests
from Config.Config import HS_APP_ID, HS_ACCESS_TOKEN, HS_CLUSTER_ID, HS_VOICE_TYPE
appid = HS_APP_ID
access_token= HS_ACCESS_TOKEN
cluster = HS_CLUSTER_ID
voice_type = HS_VOICE_TYPE
host = "openspeech.bytedance.com"
api_url = f"https://{host}/api/v1/tts"
header = {"Authorization": f"Bearer;{access_token}"}
request_json = {
"app": {
"appid": appid,
"token": "access_token",
"cluster": cluster
},
"user": {
"uid": "388808087185088"
},
"audio": {
"voice_type": voice_type,
"encoding": "mp3",
"speed_ratio": 1.0,
"volume_ratio": 1.0,
"pitch_ratio": 1.0,
},
"request": {
"reqid": str(uuid.uuid4()),
"text": "我是小何啊,这是什么鬼~",
"text_type": "plain",
"operation": "query",
"with_frontend": 1,
"frontend_type": "unitTson"
}
}
if __name__ == '__main__':
try:
resp = requests.post(api_url, json=request_json, headers=header)
print(f"resp body: {resp.json()}")
# 检查响应状态
if resp.status_code == 200:
resp_data = resp.json()
if resp_data.get("code") == 3000 and "data" in resp_data:
data = resp_data["data"]
# 检查data是否为空
if data:
try:
# 解码Base64数据
audio_data = base64.b64decode(data)
# 保存为MP3文件
output_file = "test_tts_output.mp3"
with open(output_file, "wb") as f:
f.write(audio_data)
print(f"音频文件已成功保存为: {output_file}")
except Exception as decode_error:
print(f"Base64解码或文件保存失败: {str(decode_error)}")
# 打印数据前100个字符以便调试
print(f"数据前100个字符: {data[:100]}")
else:
print("错误: 返回的data字段为空")
else:
print(f"API返回错误: code={resp_data.get('code')}, message={resp_data.get('message')}")
else:
print(f"HTTP请求失败: 状态码={resp.status_code}")
except Exception as e:
print(f"发生异常: {str(e)}")
import traceback
traceback.print_exc()