SPEAKER APP¶
The Speaker app is virtual Bluetooth speaker (A2DP sink). The app runs as a command-line executable, but also offers an optional simple web-browser-based user interface.
General Usage¶
You can invoke the app either as bumble-speaker
when installed as command
from pip
, or python3 apps/speaker/speaker.py
when running from a source
distribution.
Usage: speaker.py [OPTIONS] TRANSPORT
Run the speaker.
Options:
--codec [sbc|aac] [default: aac]
--discover Discover remote endpoints once connected
--output NAME Send audio to this named output (may be used more
than once for multiple outputs)
--ui-port HTTP_PORT HTTP port for the UI server [default: 7654]
--connect ADDRESS_OR_NAME Address or name to connect to
--device-config FILENAME Device configuration file
--help Show this message and exit.
Connection¶
By default, the virtual speaker will wait for another device (like a phone or
computer) to connect to it (and possibly pair). Alternatively, the speaker can
be told to initiate a connection to a remote device, using the --connect
option.
Outputs¶
The speaker can have one or more outputs. By default, the only output is a text
display on the console, as well as a browser-based user interface if connected.
In addition, a file output can be used, in which case the received audio data is
saved to a specified file.
Finally, if the host computer on which your are running the application has ffplay
as an available command line executable, the @ffplay
output can be selected, in
which case the received audio will be played on the computer's builtin speakers via
a pipe to ffplay
. (see the ffplay documentation
for details)
Web User Interface¶
When the speaker app starts, it prints out on the console the local URL at which you may point a browser (Chrome recommended for full functionality). The console line specifying the local UI URL will look like:
UI HTTP server at http://127.0.0.1:7654
By default, the web UI will show the status of the connection, as well as a realtime
graph of the received audio bandwidth.
In order to also hear the received audio, you need to click the Audio on
button
(this is due to the fact that most browsers will require some user interface with the
page before granting access to the audio output APIs).
Examples¶
In the following examples, we use a single USB Bluetooth controllers usb:0
. Other
transports can be used of course.
Start the speaker and wait for a connection
$ bumble-speaker usb:0
Start the speaker and save the AAC audio to a file named audio.aac
.
$ bumble-speaker --output audio.aac usb:0
Start the speaker and save the SBC audio to a file named audio.sbc
.
$ bumble-speaker --codec sbc --output audio.sbc usb:0
Start the speaker and connect it to a phone at address B8:7B:C5:05:57:ED
.
$ bumble-speaker --connect B8:7B:C5:05:57:ED usb:0