本地调用阿里的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



评论

此博客中的热门博文

通过命令行在Github上发布项目的新版本

利用GitHub免费的静态页面托管空间发布网页

本地部署OpenAvatarChat实时交互数字人系统