Voice Input for Chatbot: Noise Handling & Custom Vocabulary
Resolved 💬 2 comments Opened Jan 21, 2026 by Aabharan Closed Jan 21, 2026
Feature Request: Voice Input for Chatbot
Overview
Add voice input capability to the chatbot that can handle industrial/factory environments with noise and recognize domain-specific vocabulary.
Requirements
1. Noise Robustness
- Handle background noise common in factory environments (machinery, alarms, ventilation)
- Support voice activity detection (VAD) to distinguish speech from ambient noise
- Consider noise suppression/cancellation preprocessing
2. Custom Vocabulary Support
- Recognize domain-specific terms: equipment names, part numbers, procedure names
- Examples from XFab context:
- Equipment: "Novellus SPEED", "Sequel", "Altus", "ESC", "loadlock"
- Parts: "shower", "dome", "slit", "gas ring", "heater bloc"
- Procedures: "handoff", "recovery", "crushball test"
- Support for French technical terms (multilingual factory environment)
Technical Considerations
Speech-to-Text Options
| Option | Pros | Cons |
|--------|------|------|
| Google Cloud Speech-to-Text | Custom vocabulary, noise robustness, phrase hints | Cost per minute |
| Whisper (OpenAI) | High accuracy, multilingual | No custom vocabulary boosting |
| Deepgram | Real-time, custom vocabulary, noise handling | Third-party dependency |
| AssemblyAI | Good noise handling, custom spelling | Cost |
Recommended Approach
- Primary: Google Cloud Speech-to-Text with phrase hints for custom vocabulary
- Preprocessing: WebRTC-based noise suppression in browser before sending audio
- Fallback: Allow text input when voice fails
Implementation Notes
- Frontend: Web Audio API for capture + noise suppression
- Consider push-to-talk vs continuous listening modes
- Cache custom vocabulary per company (equipment names from knowledge graph)
Acceptance Criteria
- [ ] Voice input button in chat interface
- [ ] Handles 70+ dB ambient noise environments
- [ ] 90%+ accuracy on domain-specific terms
- [ ] Works in Chrome, Safari, Firefox
- [ ] Graceful fallback when microphone unavailable
Related
- Chat module:
apps/api/app/services/chat_module/ - Frontend chat:
apps/web/src/components/chat/
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗