| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Community Apps Dependencies | Show |
| Lines of code | 22483 |
| Technical Name |
muk_ai_voice |
| License | See License tab |
| Website | http://www.mukit.at |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Community Apps Dependencies | Show |
| Lines of code | 22483 |
| Technical Name |
muk_ai_voice |
| License | See License tab |
| Website | http://www.mukit.at |
MuK AI Voice
Talk to your assistant — live transcription & spoken replies
MuK IT GmbH - www.mukit.at
Speak instead of type
A mic button on the MuK AI chat composer streams your speech straight into the configured realtime provider. Words land in the textarea as the model emits them — no batch upload, no “processing” spinner, no waiting for a final transcript. Pauses break naturally into segments and the conversation continues where you left off.
When the assistant answers, the reply is synthesized by the configured TTS provider and played back through a session-aware audio queue. Hands-free conversation with your Odoo data.
No sidecar, no extra ports
The browser captures PCM16 / 24 kHz via an
AudioWorklet. Audio chunks ship over
chunked JSON-RPC POSTs into the in-Odoo realtime
controller. The controller holds the upstream WebSocket
to the provider and forwards
delta / final events back to
the browser via the standard Odoo bus. Everything runs
inside the Odoo worker — Odoo.sh
compatible out of the box.
Supported providers
Each voice provider record has its own credentials, independent of the chat provider key. Run chat on Anthropic and voice on OpenAI, or keep voice on a separate OpenAI key for billing isolation — the records do not share state.
| Provider | Realtime STT | TTS | Voices |
|---|---|---|---|
| OpenAI | gpt-4o-mini-transcribe |
gpt-4o-mini-tts |
alloy, echo, fable, onyx, nova, shimmer |
| Google Gemini | — | gemini-2.5-flash-preview-tts |
Aoede, Kore, Charon, Fenrir, Puck, … |
Realtime STT is OpenAI-only today. Pick OpenAI as the default STT provider and either OpenAI or Google as the default TTS provider — mix and match as you like.
Per-conversation control
A volume toggle in the chat header flips spoken replies on or off for the active session — default is off, so users opt in conversation by conversation. Every assistant message also carries a small speaker icon: tap it to replay that single reply on demand, independent of the session toggle.
Each agent can override the global STT and TTS provider from a dedicated tab on the agent form, so a customer service agent and an analyst agent can speak with different voices — or pull from different vendors entirely.
Cost stays visible
Voice is billed by the second. The addon tracks
voice_cost_usd on each chat session and
accumulates both STT (per second of speech) and TTS
(per character spoken) into the same field, so the
operations dashboard shows the true cost per
conversation. No hidden line items, no surprise bills.
Help and Support
Feel free to contact us, if you need any help with your Odoo
integration or additional features.
You will get 30 days of
support in case of any issues (except data recovery, migration or
training).
Our Services
Odoo
Development
Odoo
Integration
Odoo
Infrastructure
Odoo
Training
Odoo
Support
MuK AI Voice
Talk to the muk_ai assistant instead of typing. A microphone button on the chat composer streams your speech to the configured realtime provider; partial words land in the textarea live as the model emits deltas, and segments accumulate across natural pauses. Spoken replies are synthesized by the configured TTS provider and played back through a session-aware audio queue.
Runs entirely inside the Odoo Python process and the bus — no sidecar daemon, no extra ports, Odoo.sh-compatible.
Installation
To install this module, you need to:
Download the module and add it to your Odoo addons folder. Afterward, log on to your Odoo server and go to the Apps menu. Trigger the debug mode and update the list by clicking on the "Update Apps List" link. Now install the module by clicking on the install button.
Upgrade
To upgrade this module, you need to:
Download the module and add it to your Odoo addons folder. Restart the server and log on to your Odoo server. Select the Apps menu and upgrade the module by clicking on the upgrade button.
What ships
Two pre-seeded voice provider records — OpenAI and Google Gemini — sit under MuK AI > Configuration > Voice. Open one, paste the API key, and you are ready to speak.
Voice provider records carry their own credentials. They are intentionally independent of muk_ai.provider (the chat provider), so you can use Anthropic for chat and OpenAI for voice, or keep voice on a separate OpenAI key for billing isolation.
Provider matrix
| Provider | STT (Realtime) | TTS | Voices |
|---|---|---|---|
| OpenAI | gpt-4o-mini-transcribe | gpt-4o-mini-tts | alloy, echo, fable, onyx, nova, shimmer |
| Google Gemini | — | gemini-2.5-flash-preview-tts | Aoede, Kore, Charon, Fenrir, Puck, … |
Realtime STT is only supported by OpenAI today. Google handles TTS only.
Configuration
Settings — Settings > General Settings > MuK AI Voice:
- Default Speech-to-Text Provider — provider used for live transcription.
- Default Text-to-Speech Provider — provider used when the assistant speaks back.
- Manage Voice Providers — opens the per-record provider list.
Per-agent overrides — MuK AI > Agents > (Agent) > Voice tab:
- Voice TTS Provider — overrides the global default for this agent's spoken replies.
- Voice STT Provider — overrides the global default for this agent's transcription.
Voice providers — MuK AI > Configuration > Voice:
Per-record fields are API Key, TTS Model, TTS Voice and Realtime Model. Empty fields fall back to the engine's built-in defaults. The Test Connection button on the form verifies credentials against the provider's reachability endpoint.
Per-session controls — chat header:
- Voice Output toggle (volume icon) — flips muk_ai.session.voice_output_enabled per conversation. Default is off.
- Stop button — appears while audio is playing, cancels playback.
Per-message playback — message footer:
- Speaker icon — synthesizes and plays the assistant's reply on demand, independent of the per-session toggle. A spinner shows while OpenAI is generating.
How it works
The browser captures PCM16/24 kHz via an AudioWorklet. Audio chunks ship to the in-Odoo realtime controller through chunked JSON-RPC POSTs. The controller holds the upstream WebSocket to the realtime provider and forwards delta / final events back to the browser via the standard Odoo bus (bus.bus, per-partner channel muk_ai_voice.realtime).
Server-VAD (silence threshold 500 ms) detects pauses, finalizes the segment, and merges the final transcript into the composer value so subsequent utterances append without overwriting prior text.
TTS replies are returned by the chat session's _finalize_round hook: the configured TTS provider's synthesize() method is called with the final assistant text and the audio is published via bus.bus for the browser's audio queue to play in order.
On-demand playback (the per-message speaker icon) goes through a streaming HTTP route /muk_ai_voice/tts_stream and plays via a native <audio> element.
Cost tracking
Each voice exchange accrues voice_cost_usd on the related muk_ai.session record. Both STT (per-second from the realtime handle's duration) and TTS (per-character) are added to the same field. Voice cost is independent of, and additive to, the chat token cost the underlying muk_ai module already tracks.
Browser support
Any modern browser with MediaDevices.getUserMedia, AudioContext and AudioWorklet. Tested on Chrome, Edge, Firefox and Safari. This module does not use the Web Speech API — transcription always goes through the configured provider.
Credits
Contributors
- Mathias Markl <mathias.markl@mukit.at>
Author & Maintainer
This module is maintained by the MuK IT GmbH.
MuK IT is an Austrian company specialized in customizing and extending Odoo. We develop custom solutions for your individual needs to help you focus on your strength and expertise to grow your business.
If you want to get in touch please contact us via mail (sale@mukit.at) or visit our website (https://mukit.at).
MuK Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from MuK IT GmbH. The above permissions are granted for a single database per purchased license. Furthermore, with a valid license it is permitted to use the software on other databases as long as the usage is limited to a testing or development environment. You may develop modules based on the Software or that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the MuK Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module