FishAudioTTS 请求
2025-10-18
深度学习
00
python
展开代码
import requests import json import os from tqdm import tqdm import time class FishAudioTTS: def __init__(self, api_key, reference_id): """ 初始化Fish Audio TTS客户端 Args: api_key (str): Fish Audio API密钥 reference_id (str): 参考音频ID """ self.api_key = api_key self.reference_id = reference_id self.base_url = "https://api.fish.audio/v1/tts" self.headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json', 'model': 's1' # 使用s1模型 } def text_to_speech(self, text, output_file="output.wav", **kwargs): """ 将文本转换为语音 Args: text (str): 要转换的文本 output_file (str): 输出音频文件名 **kwargs: 其他API参数 """ # 默认参数 default_params = { "text": text, "reference_id": self.reference_id, # 使用参考音频ID "temperature": 0.7, "top_p": 0.7, "chunk_length": 200, "normalize": True, "format": "wav", "sample_rate": 44100, "latency": "normal" } # 合并用户提供的参数 params = {**default_params, **kwargs} print(f"🎵 开始文本转语音...") print(f"📝 文本内容: {text[:50]}{'...' if len(text) > 50 else ''}") print(f"🎯 参考音频ID: {self.reference_id}") print(f"🤖 使用模型: s1") try: # 发送请求 with tqdm(desc="🚀 发送请求到Fish Audio API", unit="req") as pbar: response = requests.post( self.base_url, headers=self.headers, json=params, timeout=60 ) pbar.update(1) # 检查响应状态 if response.status_code == 200: print("✅ API请求成功!") # 保存音频文件 with tqdm(desc="💾 保存音频文件", unit="B", unit_scale=True) as pbar: with open(output_file, "wb") as f: for chunk in response.iter_content(chunk_size=1024): if chunk: f.write(chunk) pbar.update(len(chunk)) print(f"🎉 音频文件已保存到: {output_file}") print(f"📊 文件大小: {os.path.getsize(output_file)} 字节") return True elif response.status_code == 401: print("❌ 认证失败: API密钥无效") return False elif response.status_code == 402: print("❌ 支付失败: 账户余额不足") return False elif response.status_code == 422: print("❌ 请求参数错误") try: error_info = response.json() print(f"错误详情: {error_info}") except: print(f"响应内容: {response.text}") return False else: print(f"❌ 请求失败: HTTP {response.status_code}") print(f"响应内容: {response.text}") return False except requests.exceptions.Timeout: print("❌ 请求超时,请检查网络连接") return False except requests.exceptions.RequestException as e: print(f"❌ 网络请求错误: {e}") return False except Exception as e: print(f"❌ 未知错误: {e}") return False def main(): """主函数 - 演示Fish Audio TTS的使用""" # 配置信息 API_KEY = "xx" REFERENCE_ID = "ef45348243c74d0d83ceb0f2f90c2d38" # 参考音频ID # 创建TTS客户端 tts_client = FishAudioTTS(API_KEY, REFERENCE_ID) # 测试文本 test_text = "你好,这是一个使用Fish Audio API的文本转语音测试。今天天气真不错,希望你能喜欢这个声音效果!" print("=" * 60) print("🎤 Fish Audio 文本转语音测试") print("=" * 60) # 执行文本转语音 success = tts_client.text_to_speech( text=test_text, output_file="fish_audio_output.wav", # 可以自定义参数 temperature=0.8, top_p=0.8, format="wav", sample_rate=44100 ) if success: print("\n🎉 文本转语音完成!") print(f"📁 输出文件: fish_audio_output.wav") else: print("\n❌ 文本转语音失败,请检查错误信息") if __name__ == "__main__": main()
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!