AssemblyAI
The AssemblyAISTTService provides real-time speech-to-text transcription using AssemblyAI's streaming WebSocket API. It's optimized for high accuracy and supports features like transcript formatting and end-of-turn detection.
Installation
To use AssemblyAI, install the required dependencies:
pip install "piopiy-ai[assemblyai]"
Prerequisites
- An AssemblyAI account and API key (Get yours here).
- Set your API key in your environment:
export ASSEMBLYAI_API_KEY="your_api_key_here"
Configuration
AssemblyAISTTService Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key | str | Required | Your AssemblyAI API key. |
language | Language | Language.EN | Transcription language. |
api_endpoint_base_url | str | wss://streaming.assemblyai.com/v3/ws | WebSocket endpoint URL. |
connection_params | AssemblyAIConnectionParams | AssemblyAIConnectionParams() | Advanced connection settings. |
vad_force_turn_endpoint | bool | True | Force end-of-turn on VAD stop. |
AssemblyAIConnectionParams
| Parameter | Type | Default | Description |
|---|---|---|---|
sample_rate | int | 16000 | Audio sample rate in Hz. |
encoding | str | "pcm_s16le" | Audio encoding format (pcm_s16le, pcm_mulaw). |
formatted_finals | bool | True | Enable transcript formatting (punctuation, casing). |
speech_model | str | "universal-streaming-english" | Transcription model to use. |
Usage
Basic Setup
import os
from piopiy.services.assemblyai.stt import AssemblyAISTTService
stt = AssemblyAISTTService(
api_key=os.getenv("ASSEMBLYAI_API_KEY"),
)
With Custom Parameters
from piopiy.services.assemblyai.stt import AssemblyAISTTService
from piopiy.services.assemblyai.models import AssemblyAIConnectionParams
params = AssemblyAIConnectionParams(
sample_rate=16000,
formatted_finals=True,
speech_model="universal-streaming-english"
)
stt = AssemblyAISTTService(
api_key=os.getenv("ASSEMBLYAI_API_KEY"),
connection_params=params
)
Notes
- Language Support: Currently, AssemblyAI's streaming API is optimized for English.
- Barge-in: Works seamlessly with Piopiy's built-in VAD for interruptible conversations.