Handsfree telephony in the QNX CAR platform uses the io-audio,
io-acoustic, and io-bluetooth services.
Overview
The QNX CAR platform
includes support for handsfree telephony, including acoustic echo cancellation (AEC), and handsfree
Bluetooth phone support implemented on its reference boards. It uses acoustic echo cancellation to:
- extract voice from cabin noise created by road services, construction, engines, wind, rain, and other
vehicles
- improve the clarity, quality, and accuracy of voice communication
- enhance the performance of in-car handsfree communication and speech recognition
Figure 1. Overview of echo cancellation for a Bluetooth handsfree connection
The figure above shows how handsfree telephony is implemented on the QNX CAR platform.
You may want to configure your implementation by adjusting the parameters in the
io-acoustic
configuration file. You will only need to use the
io-acoustic
API if you replace io-bluetooth with your own custom Bluetooth service.
Far-side speech
The far-side speech is processed as follows:
- The io-bluetooth process uses Bluetooth to connect the in-vehicle system and the
cell phone, and uses the libacoustic library to configure and control
io-acoustic.
- The audio stream passes through the board's on-chip Bluetooth module and its on-chip multi-channel
buffered serial port (MCBSP).
- The io-acoustic resource manager uses QNX acoustic processing to enhance the
received audio signal to compensate for vehicle cabin acoustics and noise, and increase
intelligibility. From the MCBSP, the audio stream is routed through io-audio, then io-acoustic, which uses a board-specific configuration file
(acoustic.conf). This file sets parameters such as the number of input and
output channels and devices, the audio stream route, and the compensation for system latency. It
also specifies an acoustic tuning file, which can be tailored for the expected acoustic
environment.
- io-acoustic returns the stream to io-audio, which passes it on
to the sound card for output to the loudspeakers.
Near-side speech and acoustic echo
The near-side speech and the acoustic echo are processed as follows:
- Near-side speech and the acoustic echo from the loudspeakers picked up by the in-vehicle microphones
are routed back through io-audio, io-acoustic, and the on-chip
MCBSP and Bluetooth processing.
- The io-acoustic resource manager uses the QNX AAP component to attenuate the
echo and clarify the speech. See "Processing the handsfree
call" for more detailed information about how the QNX acoustic processing library
processes the input and output signals of a handsfree call.
Who needs to use the io-acoustic API?
The QNX CAR platform is delivered with ready-to-use handsfree telephony. The included io-bluetooth service included in the platform uses the
io-acoustic API to manage the acoustic processing for handsfree telephony.
Thus, you will need to use the io-acoustic API only if:
- you replace the included io-bluetooth with your own Bluetooth
service
or
- you write your own program to do latency tests using the ioap_hf_latency_*()
functions in the io-acoustic API.
If you write an application to perform latency tests, you will still need to use
io-bluetooth to start and stop the call and its audio.
DANGER
Only one service should ever use io-acoustic. Do not attempt
to use both io-bluetooth and your own Bluetooth service to control
io-acoustic. Attempting to do so will lead to unpredicable results.