Minimax WebSocket TTS 文档里 bitrate / sample_rate 的真实取值
结论:MiniMax 不支持bitrate=24000,但支持sample_rate=24000。
你这里的“24K”要分清两个概念:
| 参数 | 含义 | MiniMax 是否支持 24K |
|---|---|---|
bitrate=24000 | 24 kbps 码率 | 不支持 |
sample_rate=24000 | 24 kHz 采样率 | 支持 |
MiniMax 官方参数里,sample_rate支持[8000, 16000, 22050, 24000, 32000, 44100],但bitrate只支持[32000, 64000, 128000, 256000],并且bitrate只对mp3生效。WebSocket 示例里也是sample_rate: 32000、bitrate: 128000、format: mp3。(MiniMax API Docs)
xiaozhi-esp32-server里说的 24K,本质上是24 kHz 采样率的 Opus 音频,不是 MiniMax 输出 24 kbps。项目默认协议配置是:
xiaozhi: audio_params: format: opus sample_rate: 24000 channels: 1 frame_duration: 60也就是设备端收的是Opus / 24kHz / 单声道 / 60ms帧。(GitHub)
具体到 MiniMax TTS 实现,项目里的minimax_httpstream.py默认设置是:
"sample_rate": 24000, "bitrate": 128000, "format": "pcm", "channel": 1注意这里是format: pcm,不是mp3,所以bitrate实际不是关键参数;关键是sample_rate=24000。项目还会在打开音频通道时把 MiniMax 的sample_rate更新为连接里的conn.sample_rate。(GitHub)
它的实际链路是:
文本 ↓ MiniMax TTS ↓ 输出 24kHz PCM ↓ xiaozhi-esp32-server 收到 PCM hex ↓ 服务器端重新编码为 Opus ↓ 发送给 ESP32代码里可以看到,它从 MiniMax 返回数据里取audio_hex,转成 PCM bytes,然后调用opus_encoder.encode_pcm_to_opus_stream()编成 Opus 发给设备。父类也会按conn.sample_rate创建 Opus 编码器。(GitHub)
所以你要这样理解:
MiniMax 不支持 24kbps MP3 但 MiniMax 支持 24kHz PCM xiaozhi 项目再把 24kHz PCM 转成 24kHz Opus建议 MiniMax 配置保持这样:
"audio_setting": { "sample_rate": 24000, "bitrate": 128000, "format": "pcm", "channel": 1 }不要写:
"bitrate": 24000如果你最终想控制的是网络传输码率 24kbps 左右,应该改的是Opus 编码器码率参数,不是 MiniMax 的bitrate。MiniMax 这边只负责输出 24kHz PCM,后面压缩率由服务器 Opus 编码决定。
