TsetsenAI - Mongolian TTS Python SDK
A powerful, user-friendly Python client for the Tsetsen Mongolian Text-to-Speech API, enabling developers to easily integrate high-quality Mongolian language text-to-speech capabilities into their applications.
Монгол хэл дээрх гарын авлага доор байгаа болно.
Features
- Mongolian Language Support: High-quality Mongolian text-to-speech synthesis
- Simple API: Clean, intuitive interfaces for all API operations
- Strongly Typed: Type annotations throughout for better IDE support
- Robust Error Handling: Detailed error messages and proper exception hierarchy
- Automatic Retries: Built-in retry mechanism for transient failures
- Async Support: Asynchronous methods for concurrent operations
- Comprehensive Documentation: Full API documentation with examples
Installation
pip install tsetsen
Prerequisites
Quick Start
Initialize the Client
from tsetsen import Client
client = Client(api_key="your-api-key")
List Available Voices
voices = client.list_voices(version="beta-v0.1")
for voice in voices.voices:
print(f"ID: {voice.id}, Name: {voice.name}, Gender: {voice.gender.name}")
Generate Speech
response = client.generate_speech(
text="Сайн байна уу? Энэ бол Монгол хэл дээрх жишээ текст юм.",
voice_id="voice-id",
version="beta-v0.1"
)
request_id = response.request_id
print(f"Request ID: {request_id}")
Check Status and Get Audio URL
status = client.check_status(request_id=request_id)
print(f"Status: {status.status.name}")
final_status = client.wait_for_completion(
request_id=request_id,
timeout=60,
poll_interval=1.0
)
if final_status.status.name == "COMPLETED":
print(f"Audio URL: {final_status.audio_url}")
else:
print(f"Error: {final_status.error_message}")
if final_status.metrics:
print(f"Audio length: {final_status.metrics.audio_length} seconds")
print(f"Credits used: {final_status.metrics.credits_used}")
Check User Balance
balance = client.get_user_balance()
print(f"Available credits: {balance.credits}")
Proper Resource Cleanup
with Client(api_key="your-api-key") as client:
voices = client.list_voices(version="beta-v0.1")
client = Client(api_key="your-api-key")
try:
voices = client.list_voices(version="beta-v0.1")
finally:
client.close()
Streaming TTS Support
The SDK now supports real-time streaming of audio as it's being generated, which is useful for applications requiring low latency.
Note: Streaming Support Limitations
- Only works with
beta-v0.2
model voices
- Limited to 5 minutes of audio per request
- Rate limited to 1 request per minute for free tier users
- Audio output is 24,000Hz, 16-bit, mono
Basic Streaming Example
from tsetsen import Client
client = Client(api_key="your-api-key")
for audio_chunk in client.stream_speech(
text="Сайн байна уу? Энэ бол Монгол хэл дээрх жишээ текст юм.",
voice_id="voice-id",
speed=1.0,
version="beta-v0.2"
):
process_audio(audio_chunk)
Stream to File Example
from tsetsen import Client
client = Client(api_key="your-api-key")
client.stream_speech_to_file(
text="Сайн байна уу? Энэ бол Монгол хэл дээрх жишээ текст юм.",
voice_id="voice-id",
output_file="output.wav",
speed=1.0,
progress_callback=lambda bytes_received, is_complete: print(f"Received {bytes_received} bytes")
)
Advanced Streaming with Callback
from tsetsen import Client
client = Client(api_key="your-api-key")
def handle_chunk(audio_chunk, is_final, error_message):
if error_message:
print(f"Error: {error_message}")
return
print(f"Received chunk of {len(audio_chunk)} bytes")
if is_final:
print("Received final chunk, stream complete")
for _ in client.stream_speech(
text="This demonstrates using a callback function with streaming.",
voice_id="voice-id",
speed=1.0,
callback=handle_chunk
):
pass
Error Handling
The SDK uses a rich exception hierarchy for proper error handling:
from tsetsen import Client, ResourceNotFoundError, AuthenticationError
client = Client(api_key="your-api-key")
try:
status = client.check_status(request_id="non-existent-id")
except ResourceNotFoundError as e:
print(f"Request not found: {e}")
except AuthenticationError as e:
print(f"Authentication error: {e}")
except Exception as e:
print(f"Other error: {e}")
Advanced Usage
Custom Timeouts and Retries
client = Client(
api_key="your-api-key",
timeout=60.0,
secure=True,
max_retries=5
)
Testing Your Setup
Here's a simple test script to verify your setup:
from tsetsen import Client
def test_connection():
client = Client(api_key="your-api-key")
try:
voices = client.list_voices(version="beta-v0.1")
print(f"Successfully connected! Found {len(voices.voices)} voices.")
balance = client.get_user_balance()
print(f"Your balance: {balance.credits} credits")
return True
except Exception as e:
print(f"Test failed: {e}")
return False
finally:
client.close()
if __name__ == "__main__":
test_connection()
Environment Variables
You can set this environment variable for configuration:
TSETSEN_API_KEY
: Your API key
Terms of Use
This SDK is provided for use with the Tsetsen AI text-to-speech service according to the terms and conditions specified in your service agreement. All rights reserved.
TsetsenAI - Монгол Хэлний TTS Python SDK
Цэцэн Монгол хэлний текст уншуулах API-д зориулсан хэрэглэхэд хялбар Python клиент бөгөөд хөгжүүлэгчид өөрсдийн аппликейшнд өндөр чанартай Монгол хэлний текст-аудио хөрвүүлэх боломжийг хялбархан холбох боломжийг олгоно.
Онцлогууд
- Монгол хэлний дэмжлэг: Өндөр чанартай Монгол хэлний текст-аудио хөрвүүлэлт
- Энгийн API: Бүх API үйлдлүүдэд зориулсан цэвэр, ойлгомжтой интерфейсүүд
- Хүчтэй төрөлжүүлэлт: IDE дэмжлэгийг сайжруулахын тулд бүх кодод төрлийн тодорхойлолтууд
- Найдвартай алдааны удирдлага: Дэлгэрэнгүй алдааны мессежүүд ба зөв бүтэцтэй алдааны ангилал
- Автомат дахин оролдлогууд: Түр зуурын алдаануудад зориулсан дахин оролдох механизм
- Асинхрон дэмжлэг: Зэрэгцээ үйлдлүүдэд зориулсан асинхрон методууд
- Иж бүрэн баримтжуулалт: Жишээнүүдтэй бүрэн API баримтжуулалт
Суулгах
pip install tsetsen
Шаардлагууд
Эхлэх
Клиентийг эхлүүлэх
from tsetsen import Client
client = Client(api_key="таны-api-түлхүүр")
Байгаа хоолойнуудыг харах
voices = client.list_voices(version="beta-v0.1")
for voice in voices.voices:
print(f"ID: {voice.id}, Нэр: {voice.name}, Хүйс: {voice.gender.name}")
Яриа хөрвүүлэх
response = client.generate_speech(
text="Сайн байна уу? Энэ бол Монгол хэл дээрх жишээ текст юм.",
voice_id="хоолой-id",
version="beta-v0.1"
)
request_id = response.request_id
print(f"Хүсэлтийн ID: {request_id}")
Статус шалгаж аудио URL авах
status = client.check_status(request_id=request_id)
print(f"Статус: {status.status.name}")
final_status = client.wait_for_completion(
request_id=request_id,
timeout=60,
poll_interval=1.0
)
if final_status.status.name == "COMPLETED":
print(f"Аудио URL: {final_status.audio_url}")
else:
print(f"Алдаа: {final_status.error_message}")
if final_status.metrics:
print(f"Аудионы урт: {final_status.metrics.audio_length} секунд")
print(f"Ашигласан кредит: {final_status.metrics.credits_used}")
Хэрэглэгчийн балансыг шалгах
balance = client.get_user_balance()
print(f"Үлдэгдэл кредит: {balance.credits}")
Дуусгах
with Client(api_key="таны-api-түлхүүр") as client:
voices = client.list_voices(version="beta-v0.1")
client = Client(api_key="таны-api-түлхүүр")
try:
voices = client.list_voices(version="beta-v0.1")
finally:
client.close()
Streaming TTS Дэмжлэг
SDK нь одоо дууг үүсгэж байх үед бодит цагийн горимд streaming хийх боломжийг дэмждэг болсон нь бага хугацааны хоцрогдолтой аппликейшнд тохиромжтой.
Анхааруулга: Streaming Дэмжлэгийн Хязгаарлалтууд
- Зөвхөн
beta-v0.2
загварын дуу хоолойнуудад ажиллана
- Нэг хүсэлтээр 5 минутаас ихгүй аудио үүсгэх боломжтой
- Үнэгүй эрхтэй хэрэглэгчдэд 1 минутад 1 хүсэлт гэсэн хязгаарлалттай
- Аудио гаралт нь 24,000Hz, 16-bit, mono
Үндсэн Streaming Жишээ
from tsetsen import Client
client = Client(api_key="your-api-key")
for audio_chunk in client.stream_speech(
text="Энэ бол Цэцэн Текст-Аудио API-н streaming тест юм.",
voice_id="voice-id",
speed=1.0,
version="beta-v0.2"
):
process_audio(audio_chunk)
Файлд Streaming Хийх Жишээ
from tsetsen import Client
client = Client(api_key="your-api-key")
client.stream_speech_to_file(
text="Энэ текст яриа болгон хөрвүүлэгдэж шууд файлд хадгалагдана.",
voice_id="voice-id",
output_file="output.wav",
speed=1.0,
progress_callback=lambda bytes_received, is_complete: print(f"Хүлээн авсан: {bytes_received} байт")
)
Дэвшилтэт Streaming Callback-тэй
from tsetsen import Client
client = Client(api_key="your-api-key")
def handle_chunk(audio_chunk, is_final, error_message):
if error_message:
print(f"Алдаа: {error_message}")
return
print(f"Хүлээн авсан хэсэг: {len(audio_chunk)} байт")
if is_final:
print("Сүүлийн хэсгийг хүлээн авлаа, урсгал дууслаа")
for _ in client.stream_speech(
text="Энэ жишээ нь streaming-тэй callback функц хэрхэн ашиглахыг харуулж байна.",
voice_id="voice-id",
speed=1.0,
callback=handle_chunk
):
pass
Алдаа Зохьцуулалт
SDK нь зөв алдааны зохьцуулалтад зориулж дараах алдааны ангиллыг олгодог:
from tsetsen import Client, ResourceNotFoundError, AuthenticationError
client = Client(api_key="таны-api-түлхүүр")
try:
status = client.check_status(request_id="байхгүй-id")
except ResourceNotFoundError as e:
print(f"Хүсэлт олдсонгүй: {e}")
except AuthenticationError as e:
print(f"Нэвтрэлтийн алдаа: {e}")
except Exception as e:
print(f"Бусад алдаа: {e}")
Нэмэлт хэрэглээ
Тусгай хүлээлт ба дахин оролдлогууд
client = Client(
api_key="таны-api-түлхүүр",
timeout=60.0,
secure=True,
max_retries=5
)
Тохиргоогоо тестлэх
Энд тохиргоогоо шалгах энгийн тест скрипт байна:
from tsetsen import Client
def test_connection():
client = Client(api_key="таны-api-түлхүүр")
try:
voices = client.list_voices(version="beta-v0.1")
print(f"Амжилттай холбогдлоо! {len(voices.voices)} хоолой олдлоо.")
balance = client.get_user_balance()
print(f"Таны баланс: {balance.credits} кредит")
return True
except Exception as e:
print(f"Тест амжилтгүй: {e}")
return False
finally:
client.close()
if __name__ == "__main__":
test_connection()
Орчны хувьсагчууд
Тохиргоонд дараах орчны хувьсагчийг ашиглаж болно:
TSETSEN_API_KEY
: Таны API түлхүүр
Ашиглалтын нөхцөл
Энэхүү SDK нь таны үйлчилгээний гэрээнд заасан нөхцөл, болзолын дагуу Цэцэн AI текст-хэл хөрвүүлэх үйлчилгээтэй ашиглахад зориулагдсан болно. Бүх эрх хамгаалагдсан.