Audio
Markdownการแปลงข้อความเป็นเสียง (TTS) และการรู้จำเสียงพูด (STT) ในรูปแบบ OpenAI Audio
คู่มือฉบับเต็ม
https://api.ailoot.ai/v1/audio/speech# การสังเคราะห์เสียงพูด
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": "สวัสดี! นี่คือตัวอย่างการสังเคราะห์เสียงพูด", "voice": "longanlingxin"}' \
--output speech.mp3
# การรู้จำ
curl https://api.ailoot.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-F model=qwen-asr \
-F file=@meeting.wav# การรู้จำเสียงพูด
with open("meeting.wav", "rb") as f:
tr = client.audio.transcriptions.create(model="qwen-asr", file=f)
print(tr.text){
"text": "สวัสดีเพื่อนร่วมงานทุกคน เริ่มจากสรุปผลของสัปดาห์นี้กัน…"
}การยืนยันสิทธิ์
- Authorizationheaderจำเป็น
คีย์ในรูปแบบ
Bearer sk-…. ใช้เฮดเดอร์ต่อไปนี้ได้เช่นกันx-api-keyหรือx-goog-api-key.
การแปลงข้อความเป็นเสียง: เนื้อหาคำขอ
- modelstringจำเป็น
โมเดลแปลงข้อความเป็นเสียง:
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. - inputstringจำเป็น
ข้อความที่ต้องการแปลงเป็นเสียง สำหรับโมเดล MiniMax ต้องน้อยกว่า 10 000 อักขระ ส่วน
qwen-audio-3.0-tts-plus— สูงสุด 600 อักขระ - voicestring
เสียง จำเป็นสำหรับโมเดล MiniMax (
speech-2.8-hdและโมเดลอื่น ๆspeech-…): รหัสเสียง MiniMax (ตัวอักษรละติน ตัวเลข_และ-, สูงสุด 128 อักขระ) สำหรับqwen-audio-3.0-tts-plusค่าเริ่มต้นคือlonganlingxin, ส่วนโมเดล Gemini TTS ใช้Kore. - response_formatstringไม่จำเป็น
MiniMax — รองรับเฉพาะ
mp3;qwen-audio-3.0-tts-plus—mp3,wavหรือpcm; Gemini TTS —wavหรือjson(ลิงก์ไปยังไฟล์)
คำตอบเป็นไฟล์เสียง (สำหรับ MiniMax — audio/mpeg). คิดค่าบริการตามจำนวนอักขระข้อความหรือโทเค็น ตามที่ระบุในแค็ตตาล็อก
การรู้จำเสียงพูด
https://api.ailoot.ai/v1/audio/transcriptions- filefileจำเป็น
ไฟล์เสียง WAV ใน
multipart/form-data.qwen-asr,qwen-asr-latestและqwen-audio-3.0-asr-flash: PCM WAV แบบไม่บีบอัดทั้งไฟล์ ความยาวไม่เกิน 5 นาที ขนาดประมาณไม่เกิน 7,5 MB (เมื่อเป็น base64 — ไม่เกิน 10 MB)asr-1.0: PCM WAV ความยาวไม่เกิน 500 วินาที และขนาดไม่เกิน 50 MBgemini-3.5-transcribe: WAV ขนาดไม่เกิน 64 MB - modelstringจำเป็น
โมเดลรู้จำเสียงพูด:
gemini-3.5-transcribe,qwen-audio-3.0-asr-flash,asr-1.0. - response_formatstringไม่จำเป็น
เฉพาะ
json(หรือไม่ระบุ)
ฟิลด์ language ไม่ถูกใช้โดยโมเดลเหล่านี้ คำตอบ: {"text": "…"}. คิดค่าบริการตามความยาวของเสียงที่บันทึก (วินาที นาที หรือชั่วโมง — แต่ละโมเดลใช้หน่วยต่างกัน)
เสียงแบบเรียลไทม์
สำหรับ qwen-audio-3.0-realtime-plus เปิด WebSocket wss://api.ailoot.ai/v1/realtime?model=qwen-audio-3.0-realtime-plus พร้อมเฮดเดอร์ Authorization: Bearer <API_KEY>. ส่งคีย์จากฝั่งเซิร์ฟเวอร์: ไม่รับคีย์ใน query string รอ session.created ที่ระบุโมเดลที่เลือก จากนั้นส่งการตั้งค่า ข้อความ และ response.create. ด้านล่างคือ JSON text frames สามเฟรมที่ส่งตามลำดับ เพื่อรับคำตอบแบบข้อความในเซสชันเสียง:
{"type":"session.update","session":{"modalities":["text"],"turn_detection":null,"max_history_turns":20,"instructions":"ตอบให้กระชับ"}}{"type":"conversation.item.create","item":{"type":"message","role":"user","content":[{"type":"input_text","text":"พูดว่าใช่"}]}}{"type":"response.create"}อ่านอีเวนต์คำตอบจนถึง response.done และ usage สรุปของคำตอบ ข้อผิดพลาดจะส่งมาในอีเวนต์ error. คิดค่าบริการตามโทเค็นข้อความและเสียงของคำตอบแต่ละรายการที่ยืนยันแล้ว เสียงขาเข้า: อีเวนต์ input_audio_buffer.append พร้อม audio — base64 PCM16 mono 16 kHz; จากนั้น input_audio_buffer.commit และ response.create. เสียงขาออกเป็น PCM16 mono 24 kHz เซสชันนี้ไม่รับ Binary frames
อีเวนต์ฝั่งไคลเอนต์ที่รองรับ: session.update, input_audio_buffer.append/commit/clear, response.create/cancel, conversation.item.create/retrieve/delete. conversation items — รองรับเฉพาะข้อความ/ข้อความตัวอักษร ไม่รองรับ function tools, web search และ voiceprint ขีดจำกัดเซสชัน: 600 วินาที, 20 คำตอบ, 20 history turns, instructions ขนาด 2000 ไบต์ และข้อความฝั่งไคลเอนต์ขนาด 8000 ไบต์ Idle timeout ขึ้นอยู่กับการกำหนดค่า (ค่าเริ่มต้น 60 วินาที)