使用说明

linux/windows应该都可以,原理是本地部署ASR,NPL和TTS使用API调用

(使用百炼平台有一定的免费额度)

实现效果

把一个音频文件放进去,出来一个回答的音频文件

获取API-KEY

首次调用通义千问API_大模型服务平台百炼(Model Studio)-阿里云帮助中心

环境配置

pip install dashscope
pip install openai
pip install funasr

代码实现

import dashscope
from dashscope.audio.tts_v2 import *
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
from openai import OpenAI
import json
model_dir = "iic/SenseVoiceSmall"
model = AutoModel(# 加载ASR模型
    model=model_dir,  # 指定模型路径
    trust_remote_code=False,
    device="cuda:0",
    disable_update=True,
)
res = model.generate(# 使用模型生成文本
    input=f"输入音频文件路径",  # 输入音频文件路径
    cache={},  # 缓存字典,用于存储中间结果
    language="auto",  # 自动检测语言,也可以指定具体语言如"zn", "en", "yue", "ja", "ko", "nospeech"
    use_itn=True,  # 是否使用反规范化处理
    batch_size_s=30,  # 减少批处理大小以加快速度
)
text = rich_transcription_postprocess(res[0]["text"])# 对生成的文本进行后处理
print(text)  # 输出最终的文本结果
api_key = "替换为您的百炼API-KEY"#替换为您的百炼API-KEY
client = OpenAI(
    api_key=api_key,
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-turbo",#可以替换LLM
    messages=[
        {'role': 'system', 'content': '你是章鱼哥'},#可以修改系统prompt
        {'role': 'user', 'content': text}
    ],
)
response_dict = json.loads(completion.model_dump_json())# 解析响应并提取消息内容
message_content = response_dict['choices'][0]['message']['content']
print(message_content)
dashscope.api_key = api_key
model = "cosyvoice-v1"#可以替换TTS模型
voice = "longxiaochun"#可以替换音色
synthesizer = SpeechSynthesizer(model=model, voice=voice)
audio = synthesizer.call(message_content)
print('requestId: ', synthesizer.get_last_request_id())
with open('output.mp3', 'wb') as f:
    f.write(audio)
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐