# Develop a generative AI (GenAI) application: GenAI Studio
GenAI Studio is a containerized solution to enable rapid prototyping and customization
by simplifying the creation and deployment of Generative AI applications on Qualcomm Linux
systems. GenAI Studio provides OpenAI-compatible APIs for the following core services:
text generation, text-to-speech, image generation, image to text (VLM), and speech-to-text.
All services are accessible through a web interface and OpenAI compatible API endpoints.
Note
- GenAI Studio doesn’t include model files or container images.
- You must generate the models and build container images.
- Ensure your host computer meets the [requirements](https://github.com/quic/ai-hub-apps/tree/main/tutorials/llm_on_genie).
- Use the host computer to generate models.
- Use the target device to build the docker containers.
| Use case | Description | Supported platforms | Model(s) |
| --- | --- | --- | --- |
| Text-to-text | Generates human-like responses with LLM for input prompts. Useful for creating articles, summaries, reports, or creative content automatically. |
IQ9 Qualcomm Linux
IQ9 Qualcomm Ubuntu
| |
| Text-to-speech | Transforms text into clear, natural-sounding audio. Ideal for voice assistants, audiobooks, and accessibility solutions. |
IQ9 Qualcomm Linux
IQ9 Qualcomm Ubuntu
| Melo-TTS |
| Text-to-image | Generates images from text descriptions. Ideal for creating graphics, illustrations, or visual content without manual design. |
IQ9 Qualcomm Linux
IQ9 Qualcomm Ubuntu
| Stable Diffusion 2.1 |
| Speech-to-text | Turns spoken words into written text. Helpful for transcription, voice commands, and hands-free applications. |
IQ9 Qualcomm Linux
IQ9 Qualcomm Ubuntu
| Whisper Tiny |
| Image-to-text | Describes images with natural language for visual understanding and moderation. |
IQ9 Qualcomm Linux
IQ9 Qualcomm Ubuntu
| Qwen 2.5-VL-7B |
| Orchestrator | Provides an easy-to-use web interface to access all these features in one place, making it simple for developers and users. |
IQ9 Qualcomm Linux
IQ9 Qualcomm Ubuntu
| All models listed above |
## High-level architecture
The following diagram shows the high-level architecture of GenAI Studio. Each functional block
runs as an independent container, providing isolation, scalability, and extensibility. This allows
new modalities to be added as additional containers without disrupting existing services.
Note
Each endpoint has a specific port. Note the port number in [endpoint port numbers](https://docs.qualcomm.com/doc/80-70030-15B/topic/develop-genai-app-with-genai-studio.html#tbl-endpoint-ports).

The following table lists each endpoint and its associated port number.
Endpoint port numbers
| Service | Port | OpenAI-compatible endpoint |
| --- | --- | --- |
| Text-to-speech | 8083 | `POST /v1/audio/speech` |
| Text-to-image | 8084 | `POST /v1/images/generations` |
| Image-to-text | 8080 | `POST /v1/responses` |
| Text-to-text | 8088 | `POST /v1/chat/completions` |
| Text-to-speech | 8083 | `POST /v1/audio/transcriptions` |
| Orchestrator | 8090 | `Unified gateway` |
### User interaction
The user accesses GenAI Studio through a web page hosted on the host computer or
through API calls from third-party applications with OpenAI-compatible endpoints.
### Request routing to target
The webpage or API call communicates with the orchestrator service running on the target device
(for example Qualcomm Dragonwing™ IQ9) and converts each user action on the UI into a corresponding
REST API call for the backend services.
### Orchestration layer
The orchestrator container acts as the central hub. It receives requests, manages session history,
handles multi-turn chat continuity (KV-cache), and aggregates responses from individual modality
containers to present a unified experience to the user.
Containerized architecture and scalability
Each functional block (orchestrator, text-to-text, text-to-speech, text-to-image, image-to-text, speech-to-text) runs as an independent container.
This provides the following:
- Isolation between services.
- Scalability, since each service scales independently based on use case.
- Extensibility, since you can add new modalities or models as additional containers
See the documentation of each respective use case, for more detailed information.
### Text-to-text
This application runs a text-to-text large language model (LLM) using the Genie API.
It provides a persistent (always-on) LLM server that supports the following:
- LLM response generation from user prompts (text-to-text).
- Preloaded model reuse to avoid reloading for each request.
- Control endpoints for model/session reset and model reload.
- System prompt updates directly from the UI.
- Conversation history that allows the UI to fetch previous messages.

For more information, see to the [text-to-text README](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-text/README.md)
and the [code flow files](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-text/CODE_FLOW.md).
### Text-to-image
The following image shows an example call flow sequence in a text-to-image container.

For more information, see to the [text-to-image README](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-image/README.md)
and the [code flow files](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-image/CODE_FLOW.md).
### Image-to-text
The following image shows an example call flow sequence in an image-to-text container.

For more information, see to the [image-to-text README](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/image-to-text/README.md)
and the [code flow files](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/image-to-text/CODE_FLOW.md).
### Text-to-speech
The following image shows an example call flow sequence in a text-to-speech container

For more information, see to the [text-to-speech README](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-speech/meloTTS/README.md).
### Speech-to-text
The following image shows an example call flow sequence in a speech-to-text container.

For more information, see to the [speech-to-text README](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/speech-to-text/README.md)
and the [code flow files](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/speech-to-text/CODE_FLOW.md).
## Setup GenAI Studio
GenAI Studio is supported on IQ9 with both Qualcomm Linux distributions and Ubuntu on Qualcomm IoT platforms.
Note
Language models aren’t shipped with GenAI Studio. You must [generate a model using AI Hub](https://docs.qualcomm.com/doc/80-70030-15B/topic/genai-prepare-ai-hub.html).
The following instructions are for Qualcomm Linux.
1. On the host computer, download the precompiled Qualcomm Linux build image for your EVK from [codelinaro](https://artifacts.codelinaro.org/ui/native/qli-ci/flashable-binaries/qimpsdk/).
2. From the host computer, [Flash the image](https://docs.qualcomm.com/doc/80-70030-254/topic/flash_images.html) to the target device.
Note
On QLI, Qualcomm-dependent DSP libraries and Docker are pre-installed.
3. Clone the repository to the target device and go to the local directory:
git clone https://github.com/qualcomm/sample-apps-for-qualcomm-linux.git
Copy to clipboard
cd sample-apps-for-qualcomm-linux/GenAI-Solutions/GenAI-Studio
Copy to clipboard
4. On the host computer, prepare the SDK (optional).
Note
This is only required if you are bringing up the full stack or a private STT or TTS service.
qpm-cli --login
Copy to clipboard
qpm-cli --install VoiceAI_ASR -v 2.5.0.0 --path /opt/qcom/qpm/VoiceAI_ASR/2.5.0.0 --silent
Copy to clipboard
qpm-cli --install VoiceAI_TTS -v 1.1.1.0 --path /opt/qcom/qpm/VoiceAI_TTS/1.1.1.0 --silent
Copy to clipboard
TARGET_REPO=/path/to/genai-studio-on-target
Copy to clipboard
rsync -av /opt/qcom/qpm/VoiceAI_ASR/2.5.0.0/whisper_sdk/ \
ubuntu@:${TARGET_REPO}/core-services/speech-to-text/whisper_sdk/
Copy to clipboard
rsync -av /opt/qcom/qpm/VoiceAI_TTS/1.1.1.0/melo_sdk/ \
ubuntu@:${TARGET_REPO}/core-services/text-to-speech/meloTTS/melo_sdk/
Copy to clipboard
5. From the sample app repository root directory on the target device, complete the preflight checks:
Note
Ensure that the device is properly provisioned before running the preflight checks.
See For initial device provisioning, see
[device setup](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/docs/setup/DEVICE_SETUP.md).
docker --version
Copy to clipboard
docker-compose version
Copy to clipboard
python3 --version
Copy to clipboard
ls -l /dev/fastrpc-cdsp
Copy to clipboard
ls /etc/cdi/
Copy to clipboard
6. Verify the QAIRT flat libs and `fastrpc` lib paths.
ls -la /opt/qairt/current/qairt_245_flat_libs/ 2>/dev/null || echo "QAIRT flat libs not yet staged"
Copy to clipboard
echo "HOST_RPC_LIB_DIR=$HOST_RPC_LIB_DIR"
Copy to clipboard
cat .env
Copy to clipboard
7. Prepare models for target.
See each service’s model generation and setup documentation for more information.
Tip
Prepare the model folders under `/opt/genai-studio-models`.
Table: Model generation and setup documentation
| Service | Target path | Documentation |
| --- | --- | --- |
| Text-to-text | `/opt/genai-studio-models/text-to-text/...` | [core-services/text-to-text/MODEL_SETUP.md](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-text/MODEL_SETUP.md) |
| Image-to-text | `/opt/genai-studio-models/image-to-text/Lemans_LE_Gen2_QNN2_41_qwen25_vl_7B/files` | [core-services/image-to-text/MODEL_SETUP.md](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/image-to-text/MODEL_SETUP.md) |
| Text-to-image | `/opt/genai-studio-models/text-to-image/stable_diffusion_v2_1-qnn_context_binary-w8a16-qualcomm_qcs9075` | [core-services/text-to-image/MODEL_SETUP.md](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-image/MODEL_SETUP.md) |
| Speech-to-text | `/opt/genai-studio-models/speech-to-text/whisper_tiny-qnn_context_binary-float-qualcomm_qcs9075` | [core-services/speech-to-text/MODEL_SETUP.md](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/speech-to-text/MODEL_SETUP.md) |
| Text-to-speech | `/opt/genai-studio-models/text-to-speech/melo-tts-v73/files` | [core-services/text-to-speech/meloTTS/Model-Generation.md](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/text-to-speech/meloTTS/Model-Generation.md) |
8. Build base images (one-time set up).
bash scripts/download-qairt-sdk.sh --service base
Copy to clipboard
bash scripts/ubuntu-arm64.sh
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -f Dockerfile.runtime -t ubuntu-runtime:24.04 .
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -f Dockerfile.build-base -t genai-build-base:latest .
Copy to clipboard
9. Build service images.
See the service README files (for example, [core-services/README.md](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/blob/main/GenAI-Solutions/GenAI-Studio/core-services/README.md))
for guidance to ensure all required files are in place.
DOCKER_BUILDKIT=1 docker build --progress=plain -t text-to-text:latest core-services/text-to-text/
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -t image-to-text:responses-v1 core-services/image-to-text/
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -t text-to-image:latest core-services/text-to-image/
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -t speech-to-text:latest core-services/speech-to-text/
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -t text-to-speech:latest core-services/text-to-speech/meloTTS/
Copy to clipboard
DOCKER_BUILDKIT=1 docker build --progress=plain -t orchestrator:latest core-services/orchestrator/
Copy to clipboard
10. Start services with `docker-compose`.
See the [README](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/tree/main/GenAI-Solutions/GenAI-Studio#7-start-services-with-docker-compose)
for the recommended environment variables to set before running `docker-compose`.
docker-compose up -d
Copy to clipboard
docker ps
Copy to clipboard
11. Run service health checks and functional checks to verify if all services are running:
curl -sf http://127.0.0.1:8080/health >/dev/null && echo "Image-to-Text (8080) OK"
Copy to clipboard
12. Run the unified test suite:
python3 -m pip install --user -r tests/unified/requirements.txt
Copy to clipboard
python3 tests/unified/run_manifest.py --target-host
Copy to clipboard
For functional endpoint checks and testing see
[functional endpoint test](https://github.com/qualcomm/sample-apps-for-qualcomm-linux/tree/main/GenAI-Solutions/GenAI-Studio#3-functional-endpoint-tests)
and the individual service README files.
If any service fails to collect logs, see the service’s troubleshooting and pain point documents from the service’s `docs` folder.
To check service logs run the following commands:
docker-compose ps
Copy to clipboard
docker logs --tail 200 text-to-text
Copy to clipboard
docker logs --tail 200 image-to-text
Copy to clipboard
docker logs --tail 200 text-to-image
Copy to clipboard
docker logs --tail 200 speech-to-text
Copy to clipboard
docker logs --tail 200 text-to-speech
Copy to clipboard
docker logs --tail 200 orchestrator
Copy to clipboard
Last Published: Jul 13, 2026
[Previous Topic
Develop a generative AI (GenAI) application](https://docs.qualcomm.com/bundle/publicresource/80-70030-15B/topics/develop-genai-app.md) [Next Topic
Troubleshooting and FAQ](https://docs.qualcomm.com/bundle/publicresource/80-70030-15B/topics/troubleshooting-and-faq.md)