`_ParticipantAudioInputStream` 补静音帧时`data` 长度未乘声道数,多声道配置下抛`ValueError`
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 76/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- python
調査の方向性
livekit/agents/voice/room_io/_input.pyを読み、特に_ParticipantAudioInputStream._forward_taskの390~399行目を確認して、無音フレームのサイズがnum_channelsに対してどのように計算されるかを調べてください。期待されるバイト長がnum_channels × samples_per_channel × 2であることを確認してください。マルチチャンネル入力に対してValueErrorなしでフレームを作成できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Bug Description
- File :
livekit/agents/voice/room_io/_input.py - Lines : 390–399(
_ParticipantAudioInputStream._forward_task方法尾部) - Package : livekit-agents(Python SDK)
Root Cause
当远端音频 track 断流、super()._forward_task() 主循环退出后,子类会补一帧 0.5 秒静音(让下游 VAD/STT 能正确检测到停顿)。这帧的字节数据手工构造时 只按"每样本 2 字节"计算,却漏乘了num_channels :
Expected Behavior
- Expected : 无论
num_channels为多少,AudioFrame的data长度都应为num_channels × samples_per_channel × 2 - Actual : data 长度始终为
samples_per_channel × 2,多声道下触发构造函数校验失败
Reproduction Steps
- 配置`AgentSession` 的`RoomIO` 输入音频为多声道(`num_channels=2` 或更高)——比如`RoomInputOptions(num_channels=2)` 或自定义`VoicePipeline` 里`input_audio_options.num_channels = 2`
- 正常跑通一次对话,让远端 participant 断开 / unmute 停止发布音频
- 触发`_on_track_unsubscribed` →`_close_stream` → 新建 stream 并重启`_forward_task` (或 participant 直接断连,主循环自然结束)
- 立刻抛出`ValueError: data length must be >= num_channels * samples_per_channel * sizeof(int16)`
Operating System
Windows11
Models Used
No response
Package Versions
livekit-agents=1.8.0
Session/Room/Call IDs
No response
Proposed Solution
Additional Context
No response
Screenshots and Recordings
No response
- 主要言語
- Python
- スター
- 14.6k
- フォーク
- 3.9k
- 平均マージ
- 3日 21時間
- マージ済み PR(30日)
- 197
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
livekit/agents のほかの issue
-
Assistant markup is stripped from chat history when expressive mode is off対応中かも @ShivamSharma43 が 15 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hosts再び着手できるかも @AbarnaaSree が 54 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
livekit/agents#7022 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Anthropic plugin ignores parallel_tool_calls=False unless tool_choice is also set対応中かも @sarankumar1325 が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 30/100
メンテナーはふだん 1 日以内に返信
-
OpenAI Realtime engine: expose the WebSocket close code and reason to subclasses対応中かも @ninglinLiu が今日担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
[oblt-aw][autodoc] Update workflow docs for gh-aw v0.92.5 and detector permission scope対応中かも @github-actions が今日担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
roadmap-100
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
comp/tools P2 tool/browser tool/file type/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
NousResearch/hermes-agent#143418 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
python-hyper/uritemplate#164 ·