Files
Podcast-Generator/ext/doubao-voice-list.py
hex2077 78d4c81173 feat: 添加多TTS服务支持并优化音频处理
- 新增Fish Audio、豆包TTS、Gemini TTS和Minimax TTS服务支持
- 实现音频音量与语速调整功能
- 添加各TTS服务的配置文件和测试脚本
- 更新README文档,增加新功能说明和示例音频
- 重构TTS适配器代码,提高可扩展性
2025-08-10 21:40:10 +08:00

72 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import requests
import json
# --- 配置 ---
# 请将这里的URL替换为你要获取数据的实际URL
URL = "https://lf3-config.bytetcc.com/obj/tcc-config-web/tcc-v2-data-lab.speech.tts_middle_layer-default" # <--- 替换成你的URL
OUTPUT_FILENAME = "data_from_url_volc_bigtts.json"
# 设置请求超时(秒),防止程序因网络问题无限期等待
TIMEOUT = 10
print(f"准备从URL获取数据: {URL}")
# --- 主逻辑 ---
try:
# 1. 发送GET请求到URL
# a. requests.get() 发送请求
# b. timeout=TIMEOUT 是一个好习惯,避免程序卡死
response = requests.get(URL, timeout=TIMEOUT)
# 2. 检查响应状态码,确保请求成功 (例如 200 OK)
# response.raise_for_status() 会在响应码为 4xx 或 5xx (客户端/服务器错误) 时抛出异常
response.raise_for_status()
print("✅ HTTP请求成功状态码: 200 OK")
# 3. 解析最外层的JSON
# requests库的 .json() 方法可以直接将响应内容解析为Python字典
# 这完成了我们的第一次解析
outer_data = response.json()
# 4. 从解析后的字典中提取内层的JSON字符串
# 这一步可能会因为键不存在而抛出KeyError
volc_bigtts_string = outer_data['data']['volc_bigtts']
# 5. 解析内层的JSON字符串得到最终的JSON数组Python列表
# 这一步可能会因为字符串格式不正确而抛出JSONDecodeError
final_json_array = json.loads(volc_bigtts_string)
print("✅ 成功解析嵌套的JSON数据。")
print("解析出的数组内容:", final_json_array)
# 6. 将最终的JSON数组写入本地文件
with open(OUTPUT_FILENAME, 'w', encoding='utf-8') as f:
json.dump(final_json_array, f, indent=4, ensure_ascii=False)
print(f"\n🎉 成功将数据写入文件: {OUTPUT_FILENAME}")
# --- 错误处理 ---
# 将不同类型的错误分开捕获,可以提供更清晰的错误信息
except requests.exceptions.HTTPError as errh:
# 捕获HTTP错误如 404 Not Found, 500 Internal Server Error
print(f"❌ HTTP错误: {errh}")
except requests.exceptions.ConnectionError as errc:
# 捕获连接错误如DNS查询失败、拒绝连接等
print(f"❌ 连接错误: {errc}")
except requests.exceptions.Timeout as errt:
# 捕获请求超时
print(f"❌ 请求超时: {errt}")
except requests.exceptions.RequestException as err:
# 捕获requests库可能抛出的其他所有异常
print(f"❌ 请求发生未知错误: {err}")
except json.JSONDecodeError:
# 捕获JSON解析错误
# 可能发生在 response.json() 或 json.loads()
print("❌ JSON解析失败。从URL返回的数据或内层字符串不是有效的JSON格式。")
# 如果需要调试,可以打印原始响应内容
# print("原始响应内容:", response.text)
except KeyError:
# 捕获键错误
print("❌ JSON结构不符合预期找不到 'data''volc_bigtts' 键。")
except Exception as e:
# 捕获所有其他未预料到的异常
print(f"❌ 发生未知错误: {e}")