ワンクリックで
qwen-tts-api
通过阿里云百炼 / DashScope 的 Qwen TTS API 生成语音,并让一个常驻 worker 按请求在多个角色与会话之间安全切换。支持 Qwen 声音设计、个人非商业用途的声音复刻、已有 voice_id 和 OumuQ 全局串行播放。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
通过阿里云百炼 / DashScope 的 Qwen TTS API 生成语音,并让一个常驻 worker 按请求在多个角色与会话之间安全切换。支持 Qwen 声音设计、个人非商业用途的声音复刻、已有 voice_id 和 OumuQ 全局串行播放。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | qwen-tts-api |
| description | 通过阿里云百炼 / DashScope 的 Qwen TTS API 生成语音,并让一个常驻 worker 按请求在多个角色与会话之间安全切换。支持 Qwen 声音设计、个人非商业用途的声音复刻、已有 voice_id 和 OumuQ 全局串行播放。 |
用于 Qwen Cloud / DashScope 的 OumuQ 兼容常驻 worker。
会话 A / 角色 A ─┐
会话 B / 角色 B ─┼─> OumuQ :8780 ─> 共享 Qwen API worker :8767
会话 C / 角色 A ─┘
character_id。voice-references/reference-index.json 解析 voice_id、模型、语言提示和发声说明。--character-id 只是无 character_id 请求的兼容默认值,不是 worker 的全局当前角色。worker 脚本:
%USERPROFILE%\.codex\skills\qwen-tts-api\scripts\qwen_tts_api_worker.py
当前角色归调用方会话所有,不归 worker 所有。推荐每次请求同时发送:
{
"session_id": "opaque-session-id",
"character_id": "cloud_zh_voice",
"text": "你好。",
"play": true
}
worker 会在提交时为每个 job 独立快照:
character_id 与可选 session_idvoice / voice_idlanguage_hintinstructions / send_instructions显式携带 character_id 时,本次角色注册表中的 api_voice_id 与 api_target_model 是权威值,必须忽略请求里残留或恶意注入的 voice、voice_id、model;只有没有显式角色的 legacy 路径允许请求覆盖。模型字段优先读取 api_target_model,api_clone_target_model 只作为兼容别名。显式角色缺少 api_voice_id 时必须报错:即使角色条目已经包含完整声音设计/复刻参数,POST /speak 也不得临时注册音色;应先通过 OumuQ 的显式注册流程完成注册和持久化,避免生成请求超时、重复计费或产生孤立音色。普通 Qwen 模型不发送 CosyVoice 的音量、语速和音调字段,只有模型 ID 明确为 qwen3-tts-instruct-* 时才发送 instructions。
密钥只从环境变量读取:
DASHSCOPE_API_KEYQWEN_API_KEY$worker = Join-Path $env:USERPROFILE '.codex\skills\qwen-tts-api\scripts\qwen_tts_api_worker.py'
Start-Process -FilePath 'py' -ArgumentList @(
'-X','utf8',
$worker,
'--workdir',(Get-Location).Path,
'--host','127.0.0.1',
'--port','8767',
'--base-url','https://dashscope.aliyuncs.com',
'--model','qwen3-tts-flash',
'--language','Chinese',
'--no-play'
) -WorkingDirectory (Get-Location).Path -WindowStyle Hidden -PassThru
健康检查:
Invoke-RestMethod -Method Get -Uri 'http://127.0.0.1:8767/status'
/status.character_id 只是启动默认角色的诊断信息。会话角色必须来自本次请求,不能从 status 推断。
完成报告必须把 OumuQ worker 名与真实模型分开:Qwen-TTS-API 是本地兼容 worker;服务商是阿里云百炼,API 是 DashScope;实际模型优先由规范字段 api_target_model 决定,旧数据才回退 api_clone_target_model。
Qwen 声音设计(仅在用户明确要求原创音色时使用,不提交参考音频):
api_voice_creation_method: voice_designapi_enrollment_model: qwen-voice-designapi_target_model: qwen3-tts-vd-2026-01-26api_voice_promptapi_voice_preview_textapi_voice_design_language: zhQwen 声音复刻(用户说明个人非商业用途并要求克隆时使用):
api_voice_creation_method: voice_cloningapi_enrollment_model: qwen-voice-enrollmentapi_target_model: qwen3-tts-vc-2026-01-22api_clone_audio_url,或仅保存在本机私有配置中的 api_clone_audio_pathapi_clone_reference_textapi_clone_reference_language角色创建上游应先把可用参考音频提取到本机私有目录。用户要求“千问版”或声音克隆时,优先把本地样本编码为 Data URL 直接提交百炼 API;不需要 GitHub、公开 URL 或公网对象存储。只有明确拒绝提交给阿里云百炼或确实没有可用样本时才停止云端注册。不得把“不上传 GitHub/公网”解释为“不提取本地音频”或“不允许通过受控 API 提交”,也不得自行选择声音设计作为 fallback。
注册完成后保存 api_voice_id 和规范字段 api_target_model;不要给新条目只写兼容别名 api_clone_target_model。注册过程有进程内锁,同一配置的并发注册只创建一次音色;显式携带 character_id 的 /speak 热路径不得触发注册。
CosyVoice 也可由此 worker 调用,但完成报告必须写实际 cosyvoice-* 模型,不得称为 Qwen3-TTS。
优先经 OumuQ POST /api/speak。只有路由层不可用时才直接调用 worker;直接调用也必须携带 character_id:
{
"text": "こんにちは。",
"session_id": "session-b",
"character_id": "cloud_jp_voice",
"play": true
}
经 OumuQ 调用时让 worker 保持 play=false,由单一 OumuQ 进程的 FIFO 逐条播放,并由主机级互斥锁避免多个 OumuQ 进程叠音。worker 建议用 --no-play 启动,避免绕过统一播放入口。
完成后用中文说明:服务商、DashScope API、OumuQ 引擎、真实模型 ID、voice_design / voice_cloning / 预设音色、角色 ID、语言、WAV 验证状态,以及“进程内 FIFO + 主机级播放互斥”。不要在可见报告中显示真实 voice ID;play=false 不得报告为实际播放已测试。
不要把真实 API key、私有 voice_id、签名 URL、个人路径、参考音频或生成音频提交到 Git/GitHub、公开 URL、可见报告或公共响应。克隆所需参考音频可以在请求内以 Data URL 直接提交给百炼 API,但不得落入日志或缓存。其他真实值只留在本地注册表、环境变量或部署密钥中。/status、/status/<job_id>、POST /speak 响应和启动日志只能返回 voice_configured 布尔值,不能返回 voice ID;API 失败也只能报告状态码、provider code、request ID 和字段名等安全元数据,不能透传完整响应。
运行缓存也必须使用安全视图:job.json 不得保存 voice / voice_id;分块 metadata 的 settings 只保存 voice_configured;provider response 必须递归移除 voice ID、音频 Data URL/base64、音频 URL 和签名/私有 URL,只保留状态、模型、request ID 等诊断字段。生成请求所需的真实值只保留在进程内存中,不要为了迁移而自动改写或删除历史缓存。
当需要运行或记录一个 OumuQ 兼容的阿里云百炼 / DashScope 云端 TTS worker 时使用。支持真正的 Qwen 声音设计、经授权的声音复刻、动态多角色和全局串行播放。
当需要规划 Qwen/DashScope 克隆声线注册、语言提示,或处理跨语言语音时使用,例如日语参考音频说中文。尤其适用于用户还没有明确想要的语音语言和口音取舍时。
当用户希望 Codex 聊天回复既保持选定角色风格、又通过 TTS 播放时使用。覆盖所有可见 Codex 输出、从 voice-references 选择角色人格/风格、先提交语音再显示文本、语音语言和屏幕语言不同的情况、支持时的情绪提示、工作区归属的缓存/输出,以及 UTF-8 中文路径。
从中文 Wiki、网页、本地资料、角色设定或参考音频中提取角色人格、语言风格和 TTS 参数,创建或更新 OumuQ 的 voice-references 角色条目。角色 TTS 或声音克隆任务应先把可用参考音频提取到本机私有目录,再按用户选择使用本地或千问克隆;skill、代码和脱敏模板可以发布,但真实 TTS 参考音频不得放到 GitHub 或公网地址。用户要求创建、添加、注册、提取或还原角色,制作中文角色提示词、语音角色、音色克隆配置或对话模式角色时使用。
当 Agent 需要从 voice-references 中选择 OumuQ 兼容的本地 TTS worker、语言、角色、固定声线、参考音频或播放行为时使用。
当 Agent 回复需要在屏幕和语音里都完整保持角色时使用。先把语音提交给 OumuQ 兼容的常驻 TTS worker,等待 queued 成功后再显示可见文本,并在屏幕语言和语音语言不同时保留角色语气。