本地调用阿里的Qwen-TTS文生语音
1、编写python代码,run.py
------------------------------
import os
from dotenv import load_dotenv
import tempfile
import requests
import dashscope
import gradio as gr
# 从当前目录的 .env 文件加载环境变量
load_dotenv()
# 从环境变量读取 API Key(在 .env 里写:DASHSCOPE_API_KEY=你的密钥)
API_KEY = os.getenv("DASHSCOPE_API_KEY")
if not API_KEY:
raise RuntimeError("请先在 `.env` 文件中设置 DASHSCOPE_API_KEY")
# Qwen-TTS 支持的音色列表
VOICE_CHOICES = [
"Cherry", "Ethan", # 基础包
"Dylan", "Jada", "Sunny" # 仅 qwen‑tts‑latest/2025‑05‑22 支持
]
def synthesize(text, voice):
"""
调用 Qwen‑TTS 生成语音,并返回给 Gradio:
- 第 1 个输出:音频(用于播放器)
- 第 2 个输出:同一文件(供下载)
"""
if not text.strip():
raise gr.Error("请输入要合成的文本~")
# 调用 DashScope 接口
rsp = dashscope.audio.qwen_tts.SpeechSynthesizer.call(
model="qwen-tts-latest",
api_key=API_KEY,
text=text,
voice=voice
)
audio_url = rsp.output.audio["url"]
# 下载到临时文件
tmp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav")
with requests.get(audio_url, stream=True) as r:
r.raise_for_status()
for chunk in r.iter_content(chunk_size=8192):
tmp_file.write(chunk)
tmp_file.flush()
# Gradio 可以直接接收文件路径
return tmp_file.name, tmp_file.name
with gr.Blocks(title="Qwen‑TTS 在线合成 Demo") as demo:
gr.Markdown(
"""
# 通义千问 TTS 文字转语音
输入文本,选择音色,一键合成并播放 / 下载
"""
)
with gr.Row():
textbox = gr.Textbox(lines=4, label="输入文字")
voice_sel = gr.Dropdown(choices=VOICE_CHOICES, value="Cherry", label="音色")
run_btn = gr.Button("🎤 开始合成")
audio_out = gr.Audio(label="试听", autoplay=True)
file_out = gr.File(label="下载音频")
run_btn.click(fn=synthesize,
inputs=[textbox, voice_sel],
outputs=[audio_out, file_out])
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0",server_port=7865)
-------------------------
2、在虚拟环境的目录下创建.evn文件,文件中的(阿里平台的API Key)内容如下:
DASHSCOPE_API_KEY=sk-7db5baa363d*************819ffdc802
评论
发表评论