In my Development Den (the spare room) I have a Raspberry Pi 4 setup with a monitor for use as a quick reference station when working on nearby devices.
With no speakers connected this can sometimes pose an issue when trying to follw a tutorial video, and when I do need audio, a Bluetooth speaker is never around.
There is a SIP phone next to the Pi on my desk, and so I thought; that has a decent network connected speaker, why not use that?
This is what ensued…

The idea is to have a SIP endpoint running as a service on the Pi in auto-answer mode. This will allow a desk phone to dial the Pi extension and receive the Pi’s audio through the loudspeaker.
The Pi is running stock Raspbian Bullseye with the desktop environment.
SIP Endpoint
Baresip looks a good choice for this project due to its modularity.
As this will be a service running in the background, only the core module of Baresip needs to be installed:
sudo apt install --no-install-recommends baresip-core
When installed, run the program briefly to have it create its default configuration files:
baresip
This will create the default template files in a .baresip directory within the home folder. We’ll need to edit the accounts and config files to get it to a call answering state.
Starting with the accounts file:
nano .baresip/accounts
Add the following line to the bottom of the file:
<sip:{endpoint}@{sip_server}>;auth_pass={sip_secret};answermode=auto
Where:
{endpoint} – SIP extension number
{sip_server} – IP/hostname of the PBX
{sip_secret} – Extension password
Answermode flag has been added to allow calls to this extension to be answered automatically.
After the accounts file, move onto the config:
nano .baresip/config
This file can be left as default, however a few quality-of-life improvements will be made…
Uncomment the following lines:
module opus.so
module g722.so
These allow the use of the higher quality codecs commonly in use; g722 is the elder and while it offers higher quality from a phone call audio point of view, may fall short for music. Opus is the newer and can be configured for excellent quality overall, but being newer may not be an available choice on older phones.
If Opus is available, the bitrate can be increased via this line further down the config file (higher bitrate, higher audio quality):
opus_bitrate 28000 # 6000-510000
Make sure both you SIP devices and PBX are capable and configured to offer these codecs at the highest priority.
Testing
Good time for a sanity check, for this an audio file or stream playing through VLC, or any source of audio will do.
Run the application in the terminal
baresip
And make a call to its extension, you should see output in the terminal, and hear the audio through the phone.
If it’s successful, a service can be created to have this running in the background on startup…
Create Service
To allow baresip to start at boot, its best to create a service for it and restart it if it ever stops.
Create and edit a service file:
sudo nano /etc/systemd/system/sipaudio.service
Add the following to this file:
[Unit]
Description=SIP endpoint for Pi audio
After=sound.target network.target
[Service]
ExecStart=/usr/bin/baresip
Restart=always
User=pi
WorkingDirectory=/home/{username}
StandardOutput=journal
StandardError=journal
Environment=HOME=/home/{username}
Environment=XDG_RUNTIME_DIR=/run/user/1000
[Install]
WantedBy=multi-user.target
When saved, reload services:
sudo systemctl daemon-reload
Start the service and enable it to start at boot:
sudo systemctl enable --now sipaudio
With some audio playing, try another call to make sure its answering and picking up audio from the desktop environment.
Conclusion
It’s a niche solution for those who have an audio-less Pi and a SIP phone next to it, but the results are plesently convenient for those rare times when audio is needed.
My accompanying desk phone (Yealink T46S) only offers g722 has the higher codec, but still is perfectly fine for speech output and fine (not great) for audio. I’m sure using Opus at the higher bitrate will put it on par with some of the streaming services. Afterall, YouTube uses opus as audio for its videos, as noted by the “stats for nerds” section:
