refactor: 更新音频文件路径和UI样式调整
fix: 修正TTS提供商配置中的null值问题 chore: 清理无用文件和更新输入文本内容
This commit is contained in:
100
server/check/check_minimax_voices.py
Normal file
100
server/check/check_minimax_voices.py
Normal file
@@ -0,0 +1,100 @@
|
||||
import json
|
||||
import requests
|
||||
import time
|
||||
import os
|
||||
import json
|
||||
|
||||
def check_minimax_voices():
|
||||
config_file_path = "../config/minimax.json"
|
||||
tts_providers_path = "../config/tts_providers.json"
|
||||
test_text = "你好" # 测试文本
|
||||
|
||||
try:
|
||||
with open(config_file_path, 'r', encoding='utf-8') as f:
|
||||
config_data = json.load(f)
|
||||
except FileNotFoundError:
|
||||
print(f"错误: 配置文件未找到,请检查路径: {config_file_path}")
|
||||
return
|
||||
except json.JSONDecodeError:
|
||||
print(f"错误: 无法解析 JSON 文件: {config_file_path}")
|
||||
return
|
||||
|
||||
voices = config_data.get('voices', [])
|
||||
request_payload = config_data.get('request_payload', {})
|
||||
headers = config_data.get('headers', {})
|
||||
url = config_data.get('apiUrl', '')
|
||||
|
||||
try:
|
||||
with open(tts_providers_path, 'r', encoding='utf-8') as f:
|
||||
tts_providers_data = json.load(f)
|
||||
minimax_config = tts_providers_data.get('minimax', {})
|
||||
minimax_api_key = minimax_config.get('api_key')
|
||||
minimax_group_id = minimax_config.get('group_id')
|
||||
|
||||
if minimax_api_key and minimax_group_id:
|
||||
headers['Authorization'] = f"Bearer {minimax_api_key}"
|
||||
url = url.replace('{{group_id}}', minimax_group_id)
|
||||
else:
|
||||
print(f"警告: 未在 {tts_providers_path} 中找到 Minimax 的 group_id 或 api_key。")
|
||||
except FileNotFoundError:
|
||||
print(f"错误: TTS 提供商配置文件未找到,请检查路径: {tts_providers_path}")
|
||||
return
|
||||
except json.JSONDecodeError:
|
||||
print(f"错误: 无法解析 TTS 提供商 JSON 文件: {tts_providers_path}")
|
||||
return
|
||||
|
||||
if not voices:
|
||||
print("未在配置文件中找到任何声音(voices)。")
|
||||
return
|
||||
|
||||
|
||||
print(f"开始验证 {len(voices)} 个 Minimax 语音...")
|
||||
for voice in voices:
|
||||
voice_code = voice.get('code')
|
||||
voice_name = voice.get('alias', voice.get('name', '未知')) # 优先使用 alias, 否则使用 name
|
||||
|
||||
if voice_code:
|
||||
print(f"正在测试语音: {voice_name} (Code: {voice_code})")
|
||||
try:
|
||||
# 准备请求数据
|
||||
payload = request_payload.copy()
|
||||
payload['text'] = test_text
|
||||
payload['voice_setting']['voice_id'] = voice_code
|
||||
|
||||
# 发送请求
|
||||
response = requests.post(url, json=payload, headers=headers, timeout=30)
|
||||
|
||||
if response.status_code == 200:
|
||||
# 检查响应体中的状态
|
||||
try:
|
||||
response_data = response.json()
|
||||
status = response_data.get('data', {}).get('status', 0)
|
||||
if status == 2:
|
||||
print(f" ✅ {voice_name} (Code: {voice_code}): 可用")
|
||||
# 解析并保存音频数据
|
||||
audio_hex = response_data.get('data', {}).get('audio')
|
||||
if audio_hex:
|
||||
try:
|
||||
audio_bytes = bytes.fromhex(audio_hex)
|
||||
with open(f"test_{voice_code}.mp3", "wb") as audio_file:
|
||||
audio_file.write(audio_bytes)
|
||||
except (ValueError, Exception) as e: # 捕获ValueError for invalid hex, Exception for other file errors
|
||||
print(f" ❌ 保存音频文件时发生错误: {e}")
|
||||
else:
|
||||
print(f" ⚠️ 响应中未找到音频数据。")
|
||||
else:
|
||||
print(f" ❌ {voice_name} (Code: {voice_code}): 不可用, 状态: {status}")
|
||||
except json.JSONDecodeError:
|
||||
print(f" ❌ {voice_name} (Code: {voice_code}): 无法解析响应 JSON")
|
||||
else:
|
||||
print(f" ❌ {voice_name} (Code: {voice_code}): 不可用, 状态码: {response.status_code}")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f" ❌ {voice_name} (Code: {voice_code}): 请求失败, 错误: {e}")
|
||||
time.sleep(0.5) # 短暂延迟,避免请求过快
|
||||
else:
|
||||
print(f"跳过一个缺少 'code' 字段的语音条目: {voice}")
|
||||
|
||||
print("Minimax 语音验证完成。")
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_minimax_voices()
|
||||
Reference in New Issue
Block a user