diff --git a/components/control_plane/src/multimodal/control_plane_multimodal_session_service.c b/components/control_plane/src/multimodal/control_plane_multimodal_session_service.c index f0ca12f..d22e26b 100644 --- a/components/control_plane/src/multimodal/control_plane_multimodal_session_service.c +++ b/components/control_plane/src/multimodal/control_plane_multimodal_session_service.c @@ -46,7 +46,7 @@ #endif #ifndef CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT -#define CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT 3000 +#define CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT 2000 #endif #ifndef CONFIG_MULTIMODAL_DOWNSTREAM_INCREMENTAL_RESPONSE @@ -70,7 +70,7 @@ #endif #ifndef CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS -#define CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS 24 +#define CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS 16 #endif #define CONTROL_PLANE_MULTIMODAL_OPUS_CHANNELS 1 diff --git a/components/platform/src/multimodal/audio_pipeline.c b/components/platform/src/multimodal/audio_pipeline.c index 9371833..506ff83 100644 --- a/components/platform/src/multimodal/audio_pipeline.c +++ b/components/platform/src/multimodal/audio_pipeline.c @@ -246,14 +246,14 @@ #ifndef CONFIG_MULTIMODAL_OPUS_FRAME_DURATION_MS /* - * 服务端协议要求 60ms raw-Opus 帧。24kbps、低复杂度和关闭 VBR/DTX/FEC 是当前 + * 服务端协议要求 60ms raw-Opus 帧。16kbps、低复杂度和关闭 VBR/DTX/FEC 是当前 * 实时性与 MCU 负载基线;改变任一项需同步验证服务端解码、包容量和网络带宽。 */ #define CONFIG_MULTIMODAL_OPUS_FRAME_DURATION_MS 60 #endif #ifndef CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS -#define CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS 24 +#define CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS 16 #endif #ifndef CONFIG_MULTIMODAL_OPUS_COMPLEXITY diff --git a/docs/knowledge vault/voice-uplink-flow-zh.md b/docs/knowledge vault/voice-uplink-flow-zh.md index b34f1e9..393c59a 100644 --- a/docs/knowledge vault/voice-uplink-flow-zh.md +++ b/docs/knowledge vault/voice-uplink-flow-zh.md @@ -544,7 +544,7 @@ if (ret != ESP_CODEC_DEV_OK) { 位深:16 bit 通道:单声道 Opus 帧长:60 ms -Opus 码率:24 kbps +Opus 码率:16 kbps ``` 每个 60ms 帧包含: @@ -679,11 +679,11 @@ Opus 编码核心为: esp_opus_enc_process(ctx->opus_enc, &in_frame, &out_frame); ``` -输入为固定的 1920 字节 PCM,输出为压缩后的 Opus 包。按照 24kbps、60ms 计算,理论平均大小约为: +输入为固定的 1920 字节 PCM,输出为压缩后的 Opus 包。按照 16kbps、60ms 计算,理论平均大小约为: ```text -24000 bit/s × 0.060s = 1440 bit -1440 / 8 = 180 字节 +16000 bit/s × 0.060s = 960 bit +960 / 8 = 120 字节 ``` 实际包大小仍可能受到编码参数和音频内容影响。 diff --git a/docs/knowledge vault/websocket-and-audio-flow.md b/docs/knowledge vault/websocket-and-audio-flow.md index 2a85aab..7c35481 100644 --- a/docs/knowledge vault/websocket-and-audio-flow.md +++ b/docs/knowledge vault/websocket-and-audio-flow.md @@ -142,7 +142,7 @@ Token、JWT、Wi-Fi 密码等敏感信息不应写入文档、日志或提交到 | `CONFIG_MULTIMODAL_AUDIO_CODEC_BITS_PER_SAMPLE` | 16 bit | PCM 位深 | | `CONFIG_MULTIMODAL_AUDIO_CHUNK_SIZE` | 1920 B | 60 ms 单声道 PCM 数据量 | | `CONFIG_MULTIMODAL_OPUS_FRAME_DURATION_MS` | 60 ms | 每个 Opus 帧的时长 | -| `CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS` | 24 kbit/s | Opus 目标码率 | +| `CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS` | 16 kbit/s | Opus 目标码率 | | `CONFIG_MULTIMODAL_OPUS_COMPLEXITY` | 0 | Opus 编码复杂度,优先降低 MCU 负载 | | `CONFIG_MULTIMODAL_AUDIO_IN_GAIN_DB` | 30 dB | ES8311 输入增益 | | `CONFIG_MULTIMODAL_AUDIO_MIC_CHANNEL` | 0 | 从 codec 数据中选取的麦克风通道 | @@ -160,12 +160,12 @@ Token、JWT、Wi-Fi 密码等敏感信息不应写入文档、日志或提交到 每帧采样点 = 16000 × 60 / 1000 = 960 samples 每帧 PCM = 960 × 16 / 8 × 1 = 1920 bytes PCM 裸码率 = 16000 × 16 × 1 = 256 kbit/s = 32 kB/s -Opus 目标包大小约 = 24 kbit/s × 60 ms / 8 = 180 bytes/frame +Opus 目标包大小约 = 16 kbit/s × 60 ms / 8 = 120 bytes/frame 每秒 Opus 帧数约 = 1000 / 60 = 16.67 frame/s 24 格上行队列对应约 = 24 × 60 ms = 1.44 s 音频 ``` -180 B 是按目标码率计算的平均值,不代表每个实际 Opus 包都固定为 180 B。 +120 B 是按目标码率计算的平均值,不代表每个实际 Opus 包都固定为 120 B。 ### 4.4 下行音频参数 @@ -174,8 +174,8 @@ Opus 目标包大小约 = 24 kbit/s × 60 ms / 8 = 180 bytes/frame | 下行协议格式 | `raw-opus` | 服务端通过 WebSocket 二进制帧发送 | | 下行采样率 | 16000 Hz | Start 中与 codec 采样率保持一致 | | 下行帧时长 | 60 ms | Start 的 `frame_size` | -| 下行码率 | 24 kbit/s | Start 的 `bit_rate` | -| `CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT` | 3000 B/s | 请求服务端限制下发速率,约等于 24 kbit/s | +| 下行码率 | 16 kbit/s | Start 的 `bit_rate` | +| `CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT` | 2000 B/s | 请求服务端限制下发速率,约等于 16 kbit/s | | `CONFIG_MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_MAX_PACKET_BYTES` | 2048 B | 单个播放队列音频包最大尺寸 | | `CONFIG_MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_QUEUE_LEN` | 1024 | 下行播放队列最大包数 | | `CONFIG_MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_TASK_STACK` | 12288 B | 解码/播放任务栈 | @@ -384,11 +384,11 @@ esp_websocket_client_config_t cfg = { "audio_format": "raw-opus", "sample_rate": 16000, "frame_size": 60, - "bit_rate": 24, + "bit_rate": 16, "speech_rate": 110, "incremental_response": false, "intermediate_text": "transcript,dialog", - "transmit_rate_limit": 3000, + "transmit_rate_limit": 2000, "voice": "" }, "client_info": { diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index 01f74ce..2cd18e6 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -1602,7 +1602,7 @@ menu "TQ Cat Configuration" config MULTIMODAL_OPUS_BITRATE_KBPS int "Opus bitrate (kbps)" - default 24 + default 16 range 6 510 help raw-opus bit_rate field in Start downstream/upstream codec target. @@ -2052,7 +2052,7 @@ menu "TQ Cat Configuration" config MULTIMODAL_DOWNSTREAM_RATE_LIMIT int "Downstream transmit rate limit (bytes/s)" - default 3000 + default 2000 range 0 200000 help Optional downstream raw-opus transmit rate limit. The runtime diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 913dcf2..db5d7de 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -213,7 +213,7 @@ CONFIG_MULTIMODAL_NO_RESPONSE_TIMEOUT_MS=60000 CONFIG_MULTIMODAL_DIALOG_IDLE_TIMEOUT_MS=60000 CONFIG_MULTIMODAL_AUDIO_CHUNK_SIZE=1920 CONFIG_MULTIMODAL_OPUS_FRAME_DURATION_MS=60 -CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS=24 +CONFIG_MULTIMODAL_OPUS_BITRATE_KBPS=16 CONFIG_MULTIMODAL_OPUS_COMPLEXITY=0 # CONFIG_MULTIMODAL_OPUS_ENABLE_VBR is not set # CONFIG_MULTIMODAL_OPUS_ENABLE_DTX is not set @@ -249,7 +249,7 @@ CONFIG_MULTIMODAL_AUDIO_TASK_CORE=1 CONFIG_MULTIMODAL_TTS_VOICE="" CONFIG_MULTIMODAL_TTS_SPEECH_RATE=110 CONFIG_MULTIMODAL_DOWNSTREAM_INTERMEDIATE_TEXT="transcript,dialog" -CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT=3000 +CONFIG_MULTIMODAL_DOWNSTREAM_RATE_LIMIT=2000 # CONFIG_MULTIMODAL_DOWNSTREAM_INCREMENTAL_RESPONSE is not set CONFIG_MULTIMODAL_WEBSOCKET_TASK_STACK_BYTES=32768 CONFIG_MULTIMODAL_WEBSOCKET_TASK_PRIORITY=8