Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Add interpretation output modes: streaming and turn-taking

Aperta
#4 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
macos, rust

Direzione di ricerca

Inizia tracciando la configurazione/lo stato condivisi e i confini di acquisizione, trascrizione, traduzione e riproduzione descritti nell’issue. Esamina come gli eventi dei segmenti di trascrizione VAD o realtime possano definire il completamento della sorgente, quindi mappa le transizioni di stato e i casi di reimpostazione della coda prima di scegliere il comportamento per le questioni di prodotto irrisolte. Il completamento include test mirati per strategia, transizioni, coda e sovrapposizioni, oltre a note manuali sul flusso della riunione per entrambe le modalità.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Background

Intervox currently optimizes for low-latency streaming interpretation: translated speech is produced as soon as possible and can overlap with the original input. That is useful for fast interactive conversations, but it is not the only interpretation style users expect.

A second mode should support turn-taking/consecutive-style interpretation, where the user speaks a segment, Intervox waits for a pause or segment boundary, then plays the translated speech without overlapping the original speaker.

Proposed modes

Streaming interpretation
  • Current direction: translate and output as soon as possible.
  • Can overlap with ongoing input speech.
  • Optimized for low latency and conversational pace.
  • Best for short utterances and users who accept some overlap.
Turn-taking interpretation
  • Buffer input until a pause, sentence, or utterance boundary.
  • Play translated speech after the source segment ends.
  • Avoid overlapping original speech and translated speech.
  • Optimized for clarity, formal meetings, and situations where the listener needs a cleaner translated channel.
  • Higher latency is acceptable and expected.

Implementation direction

  • Add an explicit interpretation output strategy setting, likely under Translation settings.
  • Model the strategy in shared config/state rather than front-end-only UI state.
  • Keep the current streaming path as one strategy.
  • Add a turn-taking state machine around capture/transcript/translation/playback boundaries.
  • Use VAD and/or realtime transcript segment events to decide when a source segment is complete enough to translate/play.
  • In turn-taking mode, queue translated audio and only write it to the virtual mic when the source side is not actively speaking.
  • Define behavior for users who continue speaking while translation playback is queued or active.
  • Ensure captions communicate the current state: listening, translating, playing translation, waiting for pause, etc.
  • Avoid ad hoc fallback behavior where the app sometimes overlaps anyway without surfacing that state.

Product questions

  • Should turn-taking mode pause/suppress virtual mic output while the user is speaking, or should it queue only translated audio while still allowing original pass-through depending on mix settings?
  • Should original voice mix be disabled or constrained in turn-taking mode?
  • What pause threshold should define an utterance boundary by default?
  • Do we need a push-to-interpret / manual segment boundary option later?

Acceptance criteria

  • Users can choose between Streaming and Turn-taking interpretation modes.
  • Streaming mode preserves current low-latency behavior.
  • Turn-taking mode does not intentionally overlap translated speech with active source speech.
  • Turn-taking mode buffers/segments input and plays translated speech after a source pause or segment boundary.
  • Translation playback queues are reset correctly when switching modes, stopping interpretation, or encountering an error.
  • Captions/status UI reflects the active strategy and current turn-taking state.
  • Add focused tests for strategy selection, state transitions, queue reset, and duplicate/overlap prevention where practical.
  • Manual acceptance notes cover a realistic meeting flow for both modes.
Lingua principale
Rust
Stelle
0
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.