Audio
MarkdownSynteza mowy z tekstu (TTS) i rozpoznawanie mowy (STT) w formacie OpenAI Audio.
Pełny przewodnik
https://api.ailoot.ai/v1/audio/speech# synteza mowy
curl https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "qwen-audio-3.0-tts-plus", "input": "Dzień dobry! To przykład syntezy mowy.", "voice": "longanlingxin"}' \
--output speech.mp3
# rozpoznawanie
curl https://api.ailoot.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-F model=qwen-asr \
-F file=@meeting.wav# rozpoznawanie mowy
with open("meeting.wav", "rb") as f:
tr = client.audio.transcriptions.create(model="qwen-asr", file=f)
print(tr.text){
"text": "Dzień dobry, koleżanki i koledzy. Zacznijmy od podsumowania tygodnia…"
}Autoryzacja
- Authorizationheaderwymagany
Klucz w postaci
Bearer sk-…. Można też użyć nagłówkówx-api-keylubx-goog-api-key.
Synteza mowy: treść żądania
- modelstringwymagany
Model syntezy mowy:
gemini-3.8-flash-tts,qwen-audio-3.0-tts-plus,speech-2.8-turbo,gemini-3.8-flash-lite-tts,speech-2.8-hd,gemini-3.1-flash-tts-preview,speech-2.6-turbo,speech-2.6-hd,speech-02-turbo,speech-02-hd. - inputstringwymagany
Tekst do syntezy mowy. W modelach MiniMax — mniej niż 10 000 znaków, w
qwen-audio-3.0-tts-plus— do 600. - voicestring
Głos. Wymagany w modelach MiniMax (
speech-2.8-hdi innespeech-…): identyfikator głosu MiniMax (litery łacińskie, cyfry,_i-, do 128 znaków). Wqwen-audio-3.0-tts-plusdomyślnielonganlingxin, w modelach Gemini TTS —Kore. - response_formatstringopcjonalny
MiniMax — tylko
mp3;qwen-audio-3.0-tts-plus—mp3,wavlubpcm; Gemini TTS —wavlubjson(link do pliku).
Odpowiedź — plik audio (w przypadku MiniMax — audio/mpeg). Opłata — za znaki tekstu lub tokeny, zgodnie z katalogiem.
Rozpoznawanie mowy
https://api.ailoot.ai/v1/audio/transcriptions- filefilewymagany
Plik audio WAV w
multipart/form-data.qwen-asr,qwen-asr-latestiqwen-audio-3.0-asr-flash: pełny nieskompresowany PCM WAV o długości do 5 minut, plik do około 7,5 MB (w base64 — do 10 MB).asr-1.0: PCM WAV do 500 sekund i 50 MB.gemini-3.5-transcribe: WAV do 64 MB. - modelstringwymagany
Model rozpoznawania mowy:
gemini-3.5-transcribe,qwen-audio-3.0-asr-flash,asr-1.0. - response_formatstringopcjonalny
Tylko
json(lub nie podawać).
Pole language nie jest używane przez te modele. Odpowiedź: {"text": "…"}. Opłata — za czas trwania nagrania (sekundy, minuty lub godziny — każdy model ma własną jednostkę).
Głos w czasie rzeczywistym
Dla qwen-audio-3.0-realtime-plus otwórz WebSocket wss://api.ailoot.ai/v1/realtime?model=qwen-audio-3.0-realtime-plus z nagłówkiem Authorization: Bearer <API_KEY>. Przekazuj klucz po stronie serwera: klucz w query string nie jest akceptowany. Poczekaj na session.created z wybranym modelem, a następnie wyślij ustawienia, wiadomość i response.create. Poniżej trzy kolejne ramki tekstowe JSON dla odpowiedzi tekstowej w sesji audio:
{"type":"session.update","session":{"modalities":["text"],"turn_detection":null,"max_history_turns":20,"instructions":"Odpowiadaj krótko."}}{"type":"conversation.item.create","item":{"type":"message","role":"user","content":[{"type":"input_text","text":"Powiedz tak."}]}}{"type":"response.create"}Odczytuj zdarzenia odpowiedzi aż do response.done i jego końcowego usage; błędy przychodzą jako zdarzenie error. Opłata — za tokeny tekstowe i audio każdej potwierdzonej odpowiedzi. Wejście audio: zdarzenie input_audio_buffer.append z audio — base64 PCM16 mono 16 kHz; następnie input_audio_buffer.commit i response.create. Wyjście audio — PCM16 mono 24 kHz. Ramki binarne w tej sesji nie są akceptowane.
Obsługiwane zdarzenia klienta: session.update, input_audio_buffer.append/commit/clear, response.create/cancel, conversation.item.create/retrieve/delete. Elementy konwersacji — tylko wiadomości/tekst; narzędzia funkcyjne, wyszukiwanie w internecie i voiceprint nie są obsługiwane. Limity sesji: 600 sekund, 20 odpowiedzi, 20 tur historii, 2000 bajtów instructions i 8000 bajtów tekstu klienta. Limit czasu bezczynności zależy od konfiguracji (domyślnie 60 sekund).