Skip to main content
Qualcomm’s Audio Analytics container exposes speech recognition (ASR), text translation (T2T), and text-to-speech (TTS) through a REST and WebSocket API. All models run fully on-device on the Qualcomm NPU.

Key features

  • Three services in one container: ASR, text-to-text translation, and TTS exposed through a single API
  • NPU-accelerated: Whisper, OpusMT, MeloTTS, and PiperTTS models all run on the Qualcomm NPU, freeing the CPU for other tasks
  • Multilingual: English, Spanish, and Chinese supported across all three services; German and Italian available via PiperTTS
  • Streaming support: Real-time transcription via WebSocket alongside batch file-based transcription
  • OpenAPI / Swagger UI: Interactive API docs available at http://<device-ip>:8085/docs

Supported models

These are the currently supported models. Query /transcriptions/models, /translations/models, and /tts/models to confirm which models are loaded at runtime.

Setup

The steps below assume you have already set up your device (IQ-9075 EVK or IQ-8275 EVK). Once your device is set up, follow these steps to deploy and run the Audio Analytics container.
1

Install required packages

SSH into your device and install the required packages:
2

Set up Docker

3

Download the models

Create the model directory structure and download all models from QAI Hub.
Your models directory should now look like this:
4

Get the Docker Compose file

Download the Docker Compose file for your device from the CodeLinaro audio-analytics deploy directory.
Option A — download directly on the device:
Option B — download locally and copy to the device:
Option A — download directly on the device:
Option B — download locally and copy to the device:
The remaining steps use docker-compose-qcs9100.yml. If you are on the IQ-8275 EVK, substitute docker-compose-qcs8300.yml in each command.
5

Configure the container

Open the Docker Compose file and adjust the following environment variables as needed:
  • MODELS_DIR: Base path for all models inside the container (default: /mnt/work/models)
  • SESSION_TIMEOUT_S: Seconds of inactivity before an ASR streaming session is automatically closed (default: 30)
  • LOG_LEVEL: 10=DEBUG, 20=INFO, 30=WARNING, 40=ERROR (default: 20)
Under volumes:
  • Model path: By default maps ~/models/audio on the host to /mnt/work/models in the container. If you placed your models elsewhere, update the left side of the volume mount:
Make sure the volume mount points to your models directory and that the directory is readable by the container. If models fail to load, check directory permissions with ls -la ~/models/audio.
6

Start the container

The Docker Compose file pulls the container image automatically if it isn’t already present.
Verify the container is running:
7

Verify the service is running

Once ready, check the health endpoint:
Expected response:
You can also confirm which models are loaded:
8

Test each service

Run a quick smoke test for each of the three services.ASR — transcribe audio:
Expected response:
Translation — translate text:
Expected response:
TTS — synthesize speech:
9

Stop the container

When you are finished:

Viewing logs

All container output is available via docker logs. There are no separate log files.
To adjust log verbosity, set LOG_LEVEL in your Docker Compose file and restart the container:

Next steps

Speech recognition

File-based and real-time streaming transcription

Text-to-speech

Synthesize natural speech in multiple languages

Language translation

Translate text between languages on-device