qwen-voice 是一个基于 DashScope 的 Qwen 语音脚本技能,用于云端 ASR、云端 TTS 以及可选的声音克隆。
用途
当本地 whisper 或本地 qwen-tts 不是合适选择时,可优先使用该技能。它适用于对音频文件进行云端 ASR 转写,也适用于使用云端 TTS 音色或克隆配置进行语音合成。使用该技能需要预期存在网络/API 依赖,并可能产生费用。
配置
需要提供 DASHSCOPE_API_KEY,可放在以下位置之一:
~/.config/qwen-voice/.env
<repo>/.qwen-voice/.env
如果缺少密钥,应停止并报告认证缺失,而不是猜测。
脚本与使用方式
ASR:
python3 "$SKILL_DIR/scripts/qwen_asr.py" --in /path/to/audio.ogg python3 "$SKILL_DIR/scripts/qwen_asr.py" --in /path/to/audio.ogg --timestamps --chunk-sec 3
预设音色 TTS:
python3 "$SKILL_DIR/scripts/qwen_tts.py" --text '你好,我是 Pi。' --voice Cherry --out /tmp/out.ogg
创建克隆配置:
python3 "$SKILL_DIR/scripts/qwen_voice_clone.py" --in ./voice_sample.ogg --name george --out "$SKILL_DIR/work/qwen-voice/george.voice.json"
使用克隆配置合成:
python3 "$SKILL_DIR/scripts/qwen_tts.py" --text '你好,我是 George。' --voice-profile "$SKILL_DIR/work/qwen-voice/george.voice.json" --out /tmp/out.ogg
操作说明
输出的 .ogg 适合用于 Telegram 语音消息。
时间戳模式基于分块,并非真正的词级对齐。
脚本会在 $SKILL_DIR/work/ 内创建工作文件和 venv,而不是在项目的当前工作目录中。
在可能的情况下,优先发送较大的批量请求,而不是许多很小的 API 调用。
失败处理规则
如果缺少 API 密钥:报告认证缺失。
如果音频转换失败:先检查 ffmpeg/输入格式。
如果克隆创建失败:将克隆配置失败与普通预设音色 TTS 区分开。
如果 ASR 可用但时间戳混乱:说明它们是粗粒度的分块时间戳,而非精确的词级时间。
适用场景与限制
该技能适用于需要云端 Qwen 语音能力的场景,例如音频文件转写、Telegram 语音消息合成、预设音色或克隆音色 TTS。限制包括:依赖网络与 DashScope API,可能需要 API 密钥,可能产生费用;时间戳为分块级而非词级;音频转换依赖 ffmpeg 与输入格式;克隆功能为可选,且其失败需与普通 TTS 分开处理。