Deepgram Nova-3 STT replaces browser SpeechRecognition
- public/deepgram-processor.js β AudioWorklet: Float32βInt16 PCM for Deepgram WS
- api/admin/meetings/[id]/deepgram-token β creates 90-min scoped temp key
- api/guest/deepgram-token β same, auth via inviteToken (raw SQL, same pattern as translate)
- meeting-room-client: async startStt() opens Deepgram WS via AudioWorklet
- Prefers LiveKit mic track (no second getUserMedia, fixes iOS)
- Falls back to getUserMedia if LK track not ready
- onmessage: is_finalβfinalLogic, elseβinterimLogic (Hey Yen, broadcast, persist, translate all unchanged)
- stopStt: sends CloseStream, closes WS + AudioContext + stream
- isSttSupported always true (works in all browsers incl Firefox, Safari, iOS)
- guest-room-client: same async Deepgram pattern
- Removed isIOS guard (iOS now works via LK mic track reuse)
- Same interim/final broadcast logic to host
0c3c9b9View on GitHub β