# 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
# Audio source implementation