`_ParticipantAudioInputStream` 补静音帧时`data` 长度未乘声道数,多声道配置下抛`ValueError`
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- audio-video-rtc, backend
Línea de trabajo
Lee livekit/agents/voice/room_io/_input.py, especialmente las líneas 390–399 de _ParticipantAudioInputStream._forward_task, y comprueba cómo se calcula el tamaño del frame de silencio en función de num_channels. Confirma que la longitud de bytes esperada es num_channels × samples_per_channel × 2; el trabajo estará terminado cuando se pueda crear el frame sin ValueError para una entrada multicanal.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 14.6k
- Forks
- 3.9k
- Merge medio
- 3 d 20 h
- PR fusionados (30 d)
- 193
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de livekit/agents
-
Assistant markup is stripped from chat history when expressive mode is offPosiblemente ocupada @ShivamSharma43 la tomó hace 14 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hostsQuizá libre de nuevo @AbarnaaSree la tomó hace 54 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
livekit/agents#7022 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
livekit/agents#8031 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Agent stays "speaking" forever when the avatar participant leaves mid-replyPosiblemente ocupada @regalmoix la tomó hace 1 día. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 54/100
Los mantenedores suelen responder en 1 día
Todos los issues de livekit/agents
Issues similares
-
[Bug]: Revit selector reads process ids 2000-2099 as years (flaky AgentClientTests.AYearOrAProcessIdSelectsTheHost)Posiblemente ocupada @Wurschdhaud la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
pyrevitlabs/pyRevit#3817 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
521xueweihan/HelloGitHub#4074 ·
-
follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Helm chart: allow setting ingressClassName on the IngressPosiblemente ocupada @commarla la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
pgadmin-org/pgadmin4#10658 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100