pipecat-dashscope provides native DashScope service integrations for Pipecat.
This package uses DashScope native SDK integrations and does not rely on OpenAI-compatible endpoints.
- Pipecat pipelines are latency-sensitive and depend on realtime streaming/event semantics.
- Chat Completions and Responses APIs are typically not sufficient for low-latency turn handling in voice agents.
- Native DashScope SDK integrations keep behavior aligned with DashScope protocol families (
Generation,MultiModalConversation,tts_v2, andqwen_tts_realtime). - Use
examples/realtime_api_check.pyto verify that your endpoint supports the Realtime API before running voice pipelines.
- Native DashScope
GenerationLLM integration (DashScopeGenerationLLMService) - Native DashScope
MultiModalConversationLLM integration (DashScopeMultiModalLLMService) - Native DashScope ASR integration for segmented STT
- Native DashScope
tts_v2TTS integration - Native DashScope
qwen_tts_realtimeintegration - Native DashScope
MultiModalConversationTTS integration - Runtime-updatable Pipecat service settings
- Compatible with Pipecat
LLMContextand pipeline processors - Environment-variable based configuration for DashScope credentials
uv add pipecat-dashscopeThe recommended usage is the end-to-end voice bot in examples/bot.py, which wires this pipeline:
transport.input() -> DashScopeSTTService -> user_aggregator -> DashScope LLM -> DashScope TTS -> transport.output() -> assistant_aggregator
Set your API key and run a preset:
export DASHSCOPE_API_KEY="your_api_key"
uv run --dev examples/bot.py --preset defaultAvailable presets in examples/bot.py:
default: STTfun-asr-flash-8k-realtime, LLMgeneration/qwen3-max, TTSv2/cosyvoice-v3-flash, voicelonganyangfast: STTfun-asr-flash-8k-realtime, LLMgeneration/qwen-plus, TTSv2/cosyvoice-v2, voicelongxiaochun_v2quality: STTfun-asr-flash-8k-realtime, LLMgeneration/qwen3-max, TTSmultimodal/qwen-tts, voiceCherryrealtime: STTfun-asr-flash-8k-realtime, LLMmultimodal/qwen3.6-flash-2026-04-16, TTSqwen-realtime/qwen-tts-realtime, voiceCherry
Override any preset setting with CLI options:
uv run --dev examples/bot.py \
--preset realtime \
--llm-service multimodal \
--llm-model qwen3.6-flash-2026-04-16 \
--tts-service qwen-realtime \
--tts-model qwen-tts-realtime \
--tts-voice CherrySupported override flags:
--stt-model--llm-model--llm-service(generation,multimodal)--tts-service(v2,qwen-realtime,multimodal)--tts-model--tts-voice
DASHSCOPE_API_KEY: required ifapi_key=is not passed for any serviceDASHSCOPE_BASE_URL: optional override for bothDashScopeGenerationLLMServiceandDashScopeMultiModalLLMService
Default LLM API base URL:
https://dashscope.aliyuncs.com/api/v1
Notes:
DashScopeGenerationLLMServiceuses DashScope native asyncAioGeneration.DashScopeMultiModalLLMServiceuses DashScope native asyncAioMultiModalConversation.DashScopeSTTServiceis a segmented STT service and expects VAD in the Pipecat pipeline.DashScopeTTSV2Serviceusesdashscope.audio.tts_v2.SpeechSynthesizer.DashScopeQwenRealtimeTTSServiceusesdashscope.audio.qwen_tts_realtime.DashScopeMultiModalTTSServiceusesdashscope.MultiModalConversationwith TTS-capable Qwen models.- All DashScope TTS services require explicit
modelandvoicevalues (no built-in runtime defaults). - Keep these three TTS API families separate when extending the package; do not merge them into a single service unless DashScope unifies the underlying protocol.
examples/bot.py is an end-to-end Pipecat voice-agent demo that wires:
DashScopeSTTService(speech to text)DashScopeGenerationLLMServiceorDashScopeMultiModalLLMServiceDashScopeTTSV2Service,DashScopeQwenRealtimeTTSService, orDashScopeMultiModalTTSService
The script provides preset pipeline profiles (default, fast, quality, realtime) and supports overriding STT/LLM/TTS model, service family, and voice via CLI options.
Run it from this package directory:
uv run --dev examples/bot.py --preset qualityThe example always uses SmallWebRTC transport and forwards other Pipecat runner options as needed.
Requirements:
- Set
DASHSCOPE_API_KEYin your environment. - Ensure
pipecat-airunner extras are installed (the packagedevdependency group includes them).
- Prefer unit tests around request shaping, settings translation, and audio payload decoding.
- Avoid live DashScope network tests in the default test path.