Generate speech audio from text using MiniMax speech-2.8-hd model. Supports multiple voice options, speed/pitch/volume control, WAV file output with automati...
Python 3 已安装
requests 库: pip3 install requests
websockets 库: pip3 install websockets(流式播放需要)
ffplay(流式播放需要):
brew install ffmpegsudo apt install ffmpegstream_play.py 会提示安装方法第一步:获取 API Key
向用户获取 MiniMax API Key( sk-cp- 开头的 Token Plan key,或普通 API Key)。
第二步:确认配置
向用户确认:
https://api.minimaxi.com)还是海外( https://api.minimaxi.io)节点第三步:填写配置
获取以上信息后:
scripts/generate.py 顶部的配置常量( API_KEY、 BASE_URL),填入实际值scripts/stream_play.py 顶部的配置常量( API_KEY、 BASE_URL),填入相同的值## 配置 区段的表格,作为配置记录第四步:判断音色
IDENTITY.md 自行选择声优male-qn-jingying(精英青年音色)## 配置 区段的表格及两个脚本第五步:清理
配置填写完成后, 删除本 ## init 区段(包括 ### 需要初始化以下信息 的全部内容),仅保留 ## 配置 区段。
配置项值说明MINIMAX_API_KEY<待填入>初始化时替换为实际 keyBASE_URL<待填入>CN: https://api.minimaxi.com / Global: https://api.minimaxi.ioREGION<待填入>``CN 或 globalVOICE_ID<待填入>判断音色后填入
语言因音色较多,不再逐一列出,完整列表参考 MiniMax TTS 官方文档:
📢 channel=webchat 时的播放策略:当前 channel 为
webchat(实时对话场景)时, 应优先使用stream_play.py直接流式播放,而不生成文件。这样用户可以立即听到语音, 无需等待完整音频生成。仅当用户明确要求保存文件时,才使用generate.py。
通过 WebSocket 实时获取音频流,边生成边用 ffplay 播放。 无需生成文件,首个音频包到达即开始播放。
bash
SKILL_DIR="~/.openclaw/workspace/skills/minimax-tokenplan-tts"
python3 "$SKILL_DIR/scripts/stream_play.py" \
--text "要播放的文本内容" \
--voice "male-qn-jingying"
注意:以下示例中
stream_play.py和generate.py均指~/.openclaw/workspace/skills/minimax-tokenplan-tts/scripts/下的完整路径。
参数说明:
参数必填说明默认值--text✅要播放的文本, 最长 10000 字符---voice❌声优 IDmale-qn-jingying``--speed❌语速 [0.5,2.0]1.0``--vol❌音量 (0,10]1.0``--pitch❌音调 [-12,12]0``--save❌同时保存到文件(MP3 格式)不保存--api-key❌API Key(默认使用文件顶部配置)---base-url❌Base URL(默认使用文件顶部配置)-
示例:
bash
# 直接播放(不保存文件)
python3 stream_play.py --text "你好,我正在通过流式方式播放语音"
# 播放同时保存到文件
python3 stream_play.py --text "这段语音会被保存" --save /tmp/stream_output.mp3
# 使用女声播放
python3 stream_play.py --text "今天天气真不错" --voice female-tianmei
bash
SKILL_DIR="~/.openclaw/workspace/skills/minimax-tokenplan-tts"
python3 "$SKILL_DIR/scripts/generate.py" \
--text "要转换的文本内容" \
--voice "male-qn-jingying" \
--output "/tmp/tts_output.wav"
参数说明:
参数必填说明默认值--text✅要转换的文本, 最长 10000 字符,超出会报错---voice❌声优 IDmale-qn-jingying``--speed❌语速 [0.5,2.0]1.0``--vol❌音量 (0,10]1.0``--pitch❌音调 [-12,12]0``--output❌输出路径自动生成--api-key❌API Key(默认使用文件顶部配置)---base-url❌Base URL(默认使用文件顶部配置)-
声优可选值: 完整327个音色列表见 ## 音色列表
示例:
bash
# 基本用法
python3 generate.py --text "你好,欢迎使用 MiniMax TTS" --output /tmp/hello.wav
# 快速播报(1.5倍速)
python3 generate.py --text "紧急通知,请立即处理" --speed 1.5 --output /tmp/alert.wav
# 柔和女声
python3 generate.py --text "今天天气真不错" --voice female-qn-tianying --output /tmp/weather.wav
## 语气词标签)--voice 参数(默认 male-qn-jingying)--speed / --vol / --pitch调用 generate.py 后, stdout 输出生成结果,格式如下:
stdout 输出说明保存后的文件绝对路径~/.openclaw/media/minimax/tts/tts-2026-03-27-hello.wav
调用 stream_play.py 后, stdout 输出播放状态:
stdout 输出说明STREAM_PLAY_DONE流式播放完成STREAM_PLAY_ERROR: <msg>播放失败,附带错误信息
两个脚本的日志信息(
[INFO]、[WARN]、[ERROR])均输出到 stderr,不会混入 stdout。
code含义处理0成功继续1002限流提醒用户 API 限流中,建议稍后重试1004鉴权失败检查 API Key1008余额不足提醒充值2049无效 Key检查 Key 是否正确
~/.openclaw/media/minimax/tts/(多 Agent 共享目录)tts-YYYY-MM-DD-<slug>.wav-标签含义标签含义(laughs)笑声(chuckle)轻笑(coughs)咳嗽(clear-throat)清嗓子(groans)呻吟(breath)正常换气(pant)喘气(inhale)吸气(exhale)呼气(gasps)倒吸气(sniffs)吸鼻子(sighs)叹气(snorts)喷鼻息(burps)打嗝(lip-smacking)咂嘴(humming)哼唱(hissing)嘶嘶声(sneezes)喷嚏
注意: (emm) 不支持,请用 (breath) 或语气停顿代替。
text
--text "今天是不是很开心呀(laughs),当然了!"
--text "咳咳(coughs),不好意思,有点呛到了"
--text "嗯(inhale),让我想想(exhale)..."