# Audio & Voice

openHAB provides a modular architecture that enables all kinds of different use cases. At its core, there is the notion of an audio stream.

Audio streams are provided by audio sources and consumed by audio sinks. Each binding for handling and controlling audio services can implement an audio sink to provide their supported devices to the framework to be used as sound output.

An audio sink is identified by an unique id which in general is similar to the thing type id. The framework itself can handle multiple audio sinks at the same time.

# Build-in Audio Sinks

The distribution comes with these built-in audio sinks options:

Output device Audio sink Description
javasound System Speaker This uses the JRE sound drivers to play audio to the local sound interface.
enhancedjavasound System Speaker (with mp3 support) This uses the JRE sound drivers plus an additional 3rd party library, which adds support for mp3 files.
webaudio Web Audio If sounds should not be played on the server but on the client: This sink sends the audio stream through HTTP to web clients, which then cause it to be played back by the browser. The browser needs to be opened and have a compatible UI running. Currently this feature is supported by UI and HABPanel.

The framework is able to play sound either from the file system, from URLs (e.g. Internet radio streams) or generated by text-to-speech engines (which are available as optional Voice add-ons).

# Audio sink implementation

TODO

# Audio source implementation

TODO