Python SDK for Volcengine Audio Services (TTS, STT, and Realtime Dialogue)
Project description
Volcengine Audio SDK
Python SDK for Volcengine (ByteDance) Audio Services, providing comprehensive support for Text-to-Speech (TTS), Speech-to-Text (STT), and Realtime Dialogue capabilities.
中文 README | Package Maintenance Guide
Features
- Speech-to-Text (STT): Convert audio to text using Volcengine's ASR services (V2 and V3 APIs)
- Text-to-Speech (TTS): Synthesize natural-sounding speech from text with various voice types
- Realtime Dialogue: Bidirectional streaming for interactive voice conversations
- Protocol Support: Low-level protocol utilities for custom implementations
- Type Safety: Full Pydantic model validation for all requests and responses
Documentation
Last SDK/doc sync: 2026-06-06.
Current Tracked Sources
- Realtime dialogue:
2026-06-04T10:15:01Z- https://www.volcengine.com/docs/6561/1594356?lang=zh - TTS WebSocket bidirectional V3:
2026-05-25T08:51:30Z- https://www.volcengine.com/docs/6561/1329505?lang=zh - TTS WebSocket unidirectional V3:
2026-05-25T08:49:18Z- https://www.volcengine.com/docs/6561/1719100?lang=zh - TTS HTTP Chunked/SSE V3:
2026-05-25T09:03:36Z- https://www.volcengine.com/docs/6561/1598757?lang=zh - STT streaming bigmodel:
2026-05-29T02:49:48Z- https://www.volcengine.com/docs/6561/1354869?lang=zh - TTS voice list:
2026-05-26T05:41:00Z- https://www.volcengine.com/docs/6561/1257544?lang=zh
Installation
Requires Python 3.10 or newer.
Install from PyPI
pip install volcengine-audio
Install from source
git clone https://github.com/aiyou178/volcengine-audio.git
cd volcengine-audio
pip install -e .
Development
# from this repository root
uv sync --frozen --group dev
uv run pytest tests
uv run ruff check src tests
uv run ruff format src tests
This package is a standalone SDK. Keep source under src/volcengine_audio and
tests under tests.
Quick Start
Speech-to-Text (STT)
from volcengine_audio import (
VolcengineAsrRequestV3,
VolcengineAsrFunctionsV3,
STTAudioFormatV3,
)
# Create ASR request
asr_request = VolcengineAsrRequestV3(
audio=VolcengineAsrRequestV3.Audio(
format=STTAudioFormatV3.wav,
rate=16000,
),
request=VolcengineAsrRequestV3.Request(
model_name="bigmodel",
enable_itn=True,
enable_punc=True,
),
)
# Generate request payload
request_params = asr_request.model_dump(exclude_none=True)
full_request = VolcengineAsrFunctionsV3.generate_asr_full_client_request(
sequence=1,
request_params=request_params,
compression=True,
)
# Send audio chunks
audio_request = VolcengineAsrFunctionsV3.generate_asr_audio_only_request(
sequence=2,
audio=audio_chunk,
compress=True,
)
# Parse response
response_data = VolcengineAsrFunctionsV3.parse_response(server_response)
print(response_data['message'])
Text-to-Speech (TTS)
from volcengine_audio import (
VolcengineTTSBidirectionRequest,
VolcengineTTSFunctions,
TTSBigmodelModelType,
TTSAudioFormat,
EventSend,
)
# Create TTS request
tts_request = VolcengineTTSBidirectionRequest(
event=EventSend.StartSession,
req_params=VolcengineTTSBidirectionRequest.ReqParams(
text="Hello, this is a test.",
speaker="zh_female_vv_jupiter_bigtts",
model=TTSBigmodelModelType.seed_tts_1_1,
audio_params=VolcengineTTSBidirectionRequest.ReqParams.AudioParams(
format=TTSAudioFormat.mp3,
sample_rate=24000,
),
),
)
# Create connection
connection_payload = VolcengineTTSFunctions.start_connection_payload()
# Start session
session_payload = VolcengineTTSFunctions.start_session_payload(
session_id="unique-session-id",
req_params=tts_request.req_params.model_dump(exclude_none=True),
)
# Parse response
event, session_id, payload = VolcengineTTSFunctions.extract_response_payload(server_response)
Realtime Dialogue
from volcengine_audio import (
RealtimeDialogueConfig,
RealtimeDialogueFunctions,
ChatTTSTextRequest,
)
# Configure dialogue session
config = RealtimeDialogueConfig(
dialog=RealtimeDialogueConfig.DialogConfig(
bot_name="AI Assistant",
system_role="You are a helpful assistant.",
speaking_style="Professional and friendly.",
),
tts=RealtimeDialogueConfig.TTSConfig(
speaker=RealtimeDialogueConfig.TTSConfig.Speaker.zh_female_vv_jupiter_bigtts,
),
)
# Start connection
connection = RealtimeDialogueFunctions.start_connection_payload()
# Start session
session = RealtimeDialogueFunctions.start_session_payload(
session_id="session-123",
config=config,
)
# Send audio for recognition
audio_payload = RealtimeDialogueFunctions.task_request_payload(
session_id="session-123",
audio_data=audio_bytes,
)
# Request TTS for text
tts_payload = RealtimeDialogueFunctions.chat_tts_text_payload(
session_id="session-123",
tts_request=ChatTTSTextRequest(
start=True,
content="Hello!",
end=True,
),
)
# Finish session
finish = RealtimeDialogueFunctions.finish_session_payload("session-123")
API Reference
Modules
volcengine_audio.protocol
Core protocol definitions and utilities.
Package Metadata:
__version__: Installed package version
Classes:
ProtocolVersion: Protocol version enumeration (V1)HeaderSize: Protocol header size enumerationMessageType: Message types for bidirectional communicationMessageTypeSpecificFlag: Message flags for sequencing and event framingAsrMessageType: ASR-specific message typesAsrMessageTypeSpecificFlag: ASR-specific message flagsEventSend: Events sent from client to serverEventReceive: Events received from serverSerializationMethod: Payload serialization methods (JSON, RAW, PROTOBUF)CompressionMethod: Payload compression methods (NONE, GZIP)AudioCodec: Audio codec values used by STT request schemas
Constants:
HOST:'openspeech.bytedance.com'- Volcengine audio service host
Functions:
generate_header(): Generate protocol header for requestsgenerate_before_payload(): Generate sequence number before payload
volcengine_audio.stt
Speech-to-Text (ASR) models and utilities.
Request Models:
VolcengineAsrRequestV3: ASR V3 API requestrequest.enable_auto_lang: Auto-detect language for non-streaming STT
VolcengineAsrRequestV2: ASR V2 API request
Response Models:
AsrFullServerResponseV2: Full server response for V2ListenBidirectionPackage: Bidirectional listening package
Enums:
STTResource: STT resource types for billingSTTAudioFormatV3: Audio formats (pcm, wav, mp3, ogg)AudioFormatV2: Audio formats for the V2 request schemaSTTResultType: Result types (full, single)STTBigmodelNoStreamLanguage: Supported languages for bigmodel
Helper Classes:
VolcengineAsrFunctionsV3: V3 API helper functionsgenerate_asr_header(): Generate V3 ASR request headersgenerate_asr_before_payload(): Generate V3 ASR sequence metadatagenerate_asr_full_client_request(): Generate full client requestgenerate_asr_audio_only_request(): Generate audio-only requestparse_request(): Parse generated request bytes for inspectionparse_response(): Parse server response
VolcengineAsrFunctionsV2: V2 API helper functionsfull_client_request(): Generate full client requestaudio_only_request(): Generate audio-only request
volcengine_audio.tts
Text-to-Speech models and utilities.
Request Models:
VolcengineTTSRequest: Standard TTS requestVolcengineTTSBidirectionRequest: Bidirectional TTS requestTTSReqParams: TTS request parameters with audio settings
Response Models:
TTSSentenceStartResponse: Sentence start notificationTTSSentenceEndResponse: Sentence end notificationTTSEndResponse: TTS ended notificationTTSSentenceEndPayload: Sentence-end payload typed dictTTSSubtitlePayload: Subtitle payload typed dictTTSTimedWord: Timed word typed dict
Enums:
TTSBigmodelResourceType: TTS resource IDs (seed-tts-1.0,seed-tts-2.0, etc.)TTSBigmodelModelType: Optionalreq_params.modelvalues (seed-tts-1.1,seed-tts-2.0-standard, etc.)TTSAudioFormat: Audio formats (wav, pcm, mp3, ogg_opus)OperationEnum: HTTP TTS operation values
Configuration Models:
AppConfig: HTTP TTS app credentials and clusterUserConfig: User identifier for request metadataAudioConfig: HTTP TTS audio optionsRequestConfig: HTTP TTS request options
Helper Classes:
VolcengineTTSFunctions: TTS API helper functionsprepare_request(): Prepare HTTP TTS request payloadtask_request_payload(): Generate bidirectional task payloadstart_connection_payload(): Start connectionstart_session_payload(): Start TTS sessioncancel_session_payload(): Cancel TTS sessionfinish_session_payload(): Finish TTS sessionfinish_connection_payload(): Finish connectionextract_response_payload(): Extract and parse responsecalculate_payload(): Calculate request payload
validate_tts_resource_model_mapping(): Validate compatible resource/model pairs for TTS 1.x and 2.x resources
volcengine_audio.realtime
Realtime dialogue (combined TTS+STT) models and utilities.
Configuration:
RealtimeDialogueConfig: Complete dialogue session configurationDialogConfig: Bot persona, speaking style, locationTTSConfig: Voice type, audio settings, andtts_2_0_modelwire aliastts_2.0_modelAsr: ASR-specific settings
Request Models:
SayHelloRequest: Greeting messageUpdateConfigRequest: Runtime TTS/dialog config updateChatTTSTextRequest: Text to synthesize with TTSChatTextQueryRequest: Text query for dialogueChatRAGTextRequest: External RAG text queryConversationCreateRequest,ConversationUpdateRequest,ConversationRetrieveRequest,ConversationTruncateRequest,ConversationDeleteRequest: Context management requests
Response Models:
ASRInfoResponse: ASR task info (first word detection)ASRResponseModel: ASR recognition resultASREndedResponse: ASR ended notificationChatResponseModel: Chat responseChatTextQueryConfirmedResponse: Text query acknowledgementConversationCreatedResponse,ConversationUpdatedResponse,ConversationRetrievedResponse,ConversationTruncatedResponse,ConversationDeletedResponse: Context management acknowledgementsConfigUpdatedResponse: Runtime config update acknowledgementConnectionFailedResponse: Connection-level failure payloadSessionStartedResponse: Session startedSessionFailedResponse: Session failedRealtimeDialogueErrorResponse: Generic realtime error payloadRealtimeDialogueUsage: Usage typed dict
Helper Classes:
RealtimeDialogueFunctions: Realtime dialogue API helpersstart_connection_payload(): Start connectionfinish_connection_payload(): Finish connectionstart_session_payload(): Start dialogue sessiontask_request_payload(): Send audio for recognitionupdate_config_payload(): Update runtime TTS/dialog configsay_hello_payload(): Send greetingend_asr_payload(): Signal end of audio in push-to-talk modechat_tts_text_payload(): Request TTS for textchat_text_query_payload(): Send text querychat_rag_text_payload(): Send external RAG textconversation_*_payload(): Manage dialogue contextclient_interrupt_payload(): Interrupt server response in push-to-talk modefinish_session_payload(): Finish session
Protocol Details
Message Structure
All messages follow a standard protocol structure:
[Header 4 bytes][Optional Fields][Payload Size 4 bytes][Payload]
Header Format
Byte 0: [protocol_version:4 bits][header_size:4 bits]
Byte 1: [message_type:4 bits][message_type_specific_flags:4 bits]
Byte 2: [serialization_method:4 bits][compression:4 bits]
Byte 3: [reserved:8 bits]
Protocol Versions
- V1 (0b0001): Current protocol version
Message Types
Client → Server:
FULL_CLIENT_REQUEST (0b0001): Full request with metadataAUDIO_ONLY_REQUEST (0b0010): Audio-only request
Server → Client:
FULL_SERVER_RESPONSE (0b1001): Full response with metadataAUDIO_ONLY_RESPONSE (0b1011): Audio-only responseERROR_INFORMATION (0b1111): Error information
Serialization Methods
RAW (0b0000): Raw binary dataJSON (0b0001): JSON-encoded payloadPROTOBUF (0b0010): Protocol BuffersTHRIFT (0b0011): Apache Thrift
Compression Methods
NONE (0b0000): No compressionGZIP (0b0001): GZIP compression
Event Flow
TTS Bidirectional Flow
Client Server
| |
|-- StartConnection ----------->|
|<---------- ConnectionStarted--|
| |
|-- StartSession -------------->|
|<------------ SessionStarted---|
| |
|-- TaskRequest (text) -------->|
|<--------- TTSSentenceStart----|
|<--------- TTSResponse (audio)-|
|<----------- TTSSentenceEnd----|
| |
|-- FinishSession ------------->|
|<---------- SessionFinished----|
| |
|-- FinishConnection ---------->|
|<-------- ConnectionFinished---|
STT Streaming Flow
Client Server
| |
|-- FullClientRequest --------->|
| |
|-- AudioOnlyRequest (chunk1)-->|
|<------------- FullResponse----|
| |
|-- AudioOnlyRequest (chunk2)-->|
|<------------- FullResponse----|
| |
|-- AudioOnlyRequest (last) --->|
|<------------- FullResponse----|
Realtime Dialogue Flow
Client Server
| |
|-- StartConnection ----------->|
|<---------- ConnectionStarted--|
| |
|-- StartSession (config) ----->|
|<------------ SessionStarted---|
| |
|-- TaskRequest (audio) ------->|
|<-------------- ASRInfo--------|
|<------------ ASRResponse------|
|<-------------- ASREnded-------|
| |
|<----------- ChatResponse------|
|<------- TTSSentenceStart------|
|<--------- TTSResponse (audio)-|
|<--------- TTSSentenceEnd------|
|<------------- ChatEnded-------|
| |
|-- FinishSession ------------->|
|<---------- SessionFinished----|
Advanced Usage
Custom Context and Hot Words (STT)
from volcengine_audio import VolcengineAsrRequestV3
request = VolcengineAsrRequestV3(
request=VolcengineAsrRequestV3.Request(
corpus=VolcengineAsrRequestV3.Request.Corpus(
context=VolcengineAsrRequestV3.Request.Corpus.Context(
hotwords=[
{"word": "Volcengine"},
{"word": "ByteDance"},
],
context_type="dialog_ctx",
),
),
sensitive_words_filter=VolcengineAsrRequestV3.Request.SensitiveWordsFilter(
system_reserved_filter=True,
filter_with_signed=["badword1", "badword2"],
),
),
)
Mixed Voice (TTS)
from volcengine_audio import VolcengineTTSBidirectionRequest
request = VolcengineTTSBidirectionRequest.ReqParams(
text="Hello",
speaker="custom_mix",
mix_speaker=VolcengineTTSBidirectionRequest.ReqParams.MixSpeaker(
speakers=[
{
"source_speaker": "zh_female_vv_jupiter_bigtts",
"mix_factor": 0.6,
},
{
"source_speaker": "zh_male_yunzhou_jupiter_bigtts",
"mix_factor": 0.4,
},
],
),
)
Emotion Control (TTS)
from volcengine_audio import TTSReqParams
audio_params = TTSReqParams.AudioParams(
emotion="happy",
emotion_scale=5, # Max intensity
speech_rate=50, # 1.5x speed
loudness_rate=20, # 1.2x volume
pitch=2, # Slightly higher pitch
)
Web Search Integration (Realtime Dialogue)
from volcengine_audio import RealtimeDialogueConfig
config = RealtimeDialogueConfig(
dialog=RealtimeDialogueConfig.DialogConfig(
extra=RealtimeDialogueConfig.DialogConfig.Extra(
enable_volc_websearch=True,
volc_websearch_type="web_summary",
volc_websearch_api_key="your-api-key",
volc_websearch_result_count=5,
),
),
)
Error Handling
from volcengine_audio import EventReceive, VolcengineTTSFunctions
event, session_id, payload = VolcengineTTSFunctions.extract_response_payload(
response
)
if event == EventReceive.SessionFailed:
print(f"Session failed: {payload.get('error')}")
elif event == EventReceive.ConnectionFailed:
print(f"Connection failed: {payload.get('error')}")
elif event == EventReceive.SERVER_PROCESSING_ERROR:
print("Server processing error")
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file volcengine_audio-0.2.4.tar.gz.
File metadata
- Download URL: volcengine_audio-0.2.4.tar.gz
- Upload date:
- Size: 135.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ebbe394d7717e54c7a86d0ec523f0330b67f756a923be696b6bc3565f1d74e2
|
|
| MD5 |
6198eb54cc44ce59fd22fd1b05b1c033
|
|
| BLAKE2b-256 |
b7dce31196971d9c8214952fb58f239ceb5b1b4279061a48128b957396d71ece
|
File details
Details for the file volcengine_audio-0.2.4-py3-none-any.whl.
File metadata
- Download URL: volcengine_audio-0.2.4-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
731d99c3910b1785955a571567299f356c31a9557a9f9bf8821f729ef092e85e
|
|
| MD5 |
2a779c27a6bde280dc06c0e7547273b8
|
|
| BLAKE2b-256 |
c60981b1f79f3e43e041ef581ddd4fcb3311cc73a163d0fac131c13180777868
|