ovos-audio is the audio daemon for OpenVoiceOS. It handles text-to-speech (TTS) synthesis and sound playback, and it runs as a background service that connects to the OVOS MessageBus.
pip install ovos-audio[extras]The extras group installs this package with the default plugins. Without it, you must install and configure TTS modules yourself, as described below.
ovos-audio reads its settings from mycroft.conf.
{
// Text to Speech parameters
"tts": {
"module": "ovos-tts-plugin-server",
"fallback_module": "ovos-tts-plugin-mimic",
"ovos-tts-plugin-mimic": {
"voice": "ap"
}
},
// File locations of sounds to play for system events
"sounds": {
"start_listening": "snd/start_listening.wav",
"end_listening": "snd/end_listening.wav",
"acknowledge": "snd/acknowledge.mp3",
"error": "snd/error.mp3"
},
// Mechanism used to play WAV audio files
"play_wav_cmdline": "paplay %1 --stream-name=mycroft-voice",
// Mechanism used to play MP3 audio files
"play_mp3_cmdline": "mpg123 %1",
// Mechanism used to play OGG audio files
"play_ogg_cmdline": "ogg123 -q %1"
}ovos-audio supports dialog-transformer plugins that rewrite generated speech to match a tone or persona. See the technical manual's dialog transformers page for the full transformer chain and priority rules.
For example, ovos-solver-plugin-openai-persona rewrites text before synthesis, based on a persona string. Sample personas:
"rewrite the text as if you were explaining it to a 5-year-old""rewrite the text as if it was an angry old man speaking""Add more 'dude'ness to it"
Example input and output with the "explain to a 5-year-old" persona:
- Input:
"Quantum mechanics is a branch of physics that describes the behavior of particles at the smallest scales." - Output:
"Quantum mechanics is like a special kind of science that helps us understand really tiny things."
To enable the plugin, add this to mycroft.conf:
"dialog_transformers": {
"ovos-dialog-transformer-openai-plugin": {
"rewrite_prompt": "rewrite the text as if you were explaining it to a 5-year-old"
}
}The legacy audio service handles audio playback through the old Mycroft API. See the implementation in mycroft-core and ovos-bus-client.
By default, OCP delegates to the legacy audio service when needed, so no action is required. If you disable OCP, this API becomes the sole media playback provider.
Note: once
ovos-mediais released, OCP and this API will be disabled by default and deprecated.
See docs/audio-service.md for the module reference, and the technical manual's OCP audio plugin page for how OCP relates to this subsystem.
{
"enable_old_audioservice": true,
"disable_ocp": true,
"Audio": {
"default-backend": "vlc",
"backends": {
"simple": {
"type": "ovos_audio_simple",
"active": true
},
"vlc": {
"type": "ovos_vlc",
"active": true
}
}
}
},
}Legacy backend plugins:
- ovos-vlc-plugin
- ovos-audio-plugin-simple (no HTTPS support)
- ovos-audio-plugin-mpv (recommended default)
- ovos-media-plugin-chromecast
- ovos-media-plugin-spotify
About OCP:
- OCP was developed for
mycroft-coreunder the legacy audio service system. - OCP is always the default audio plugin, unless
"disable_ocp": trueis set in the config. - OCP uses the legacy API internally to delegate playback when the GUI is unavailable, or when configured to do so.
- OCP does not support old Mycroft CommonPlay skills. The
"ocp_legacy"pipeline inovos-corehandles that instead. - ovos-media will fully replace OCP in
ovos-audio1.0.0.
- ovos-media, the replacement for OCP and the legacy audio service
- ovos-core, the assistant core that starts and manages
ovos-audio - ovos-plugin-manager, plugin discovery for TTS, G2P, and audio backends
- ovos-bus-client, the MessageBus client used to communicate with
ovos-audio
See docs/index.md for a full architecture overview.
ovos-audio is licensed under the Apache License 2.0.