วิธีใช้งาน
- วางเสียง Base64 หรือ data URI เช่น data:audio/mpeg;base64,... ลงในช่องอินพุต
- ตรวจสอบรูปแบบไฟล์ที่ตรวจพบ แล้วกดเล่นในเครื่องเล่นเสียง
- กด “ดาวน์โหลด” ไฟล์จะได้นามสกุลที่ตรงกับรูปแบบที่ตรวจพบ เช่น .mp3 หรือ .wav
การถอดรหัสผลลัพธ์จากบริการแปลงข้อความเป็นเสียงพูด
บริการแปลงข้อความเป็นเสียงพูดที่ตอบกลับเป็น JSON ไม่สามารถใส่เสียงแบบไบนารีลงในการตอบกลับได้ จึงต้องเข้ารหัสไว้ ตัวอย่างเช่น Google Cloud Text-to-Speech จะส่งเสียงพูดกลับมาเป็นสตริง Base64 ในฟิลด์ชื่อ audioContent ตามการเข้ารหัสที่คุณร้องขอ เช่น MP3 หรือ OGG Opus ส่วน API ด้านเสียงและแชตบอตอื่น ๆ ใช้ฟิลด์อย่าง audio, data หรือ audio_base64
วางค่าที่นี่เพื่อฟังผลลัพธ์ขณะเปรียบเทียบเสียงพูด ความเร็วในการพูด หรือพรอมต์ ให้คัดลอกเฉพาะสตริงระหว่างเครื่องหมายคำพูด การแยกวิเคราะห์ JSON ก่อนจะช่วยไม่ให้ติดเครื่องหมายคำพูดหรืออักขระที่ถูก escape อย่าง \/ มาด้วย
รูปแบบไฟล์เสียงที่ตรวจหาได้
รูปแบบไฟล์จะถูกระบุจากไบต์แรก ๆ ของข้อมูลที่ถอดรหัสแล้ว ชนิด MIME ที่ขาดหายหรือไม่ถูกต้องจึงไม่เป็นปัญหา
| รูปแบบ | ลายเซ็น | Base64 ขึ้นต้นด้วย |
|---|---|---|
| MP3 | แท็ก ID3 หรือส่วนหัวเฟรม MPEG | SUQz หรือโดยมากเป็น // |
| WAV | RIFF ... WAVE | UklGR |
| OGG (Vorbis, Opus) | OggS | T2dnUw |
| FLAC | fLaC | ZkxhQ |
| M4A (AAC) | กล่อง ftyp ที่มีแบรนด์ M4A | ไม่แน่นอน (ขึ้นต้นด้วยฟิลด์ขนาด) |
PCM ดิบ: เมื่อเสียงเล่นไม่ได้
API ด้านเสียงพูดบางตัว โดยเฉพาะแบบเรียลไทม์และแบบสตรีม จะส่งตัวอย่างเสียง PCM ดิบที่ไม่มีส่วนหัวไฟล์ ซึ่งมักเป็นแบบ 16 บิต โมโน ที่ 16 หรือ 24 kHz สตรีมของระบบโทรศัพท์ก็ส่งเสียง μ-law 8 kHz ที่ไม่มีส่วนหัวในลักษณะเดียวกัน เมื่อไม่มีส่วนหัว ก็ไม่มีสิ่งใดในไบต์ที่บอกว่าข้อมูลคืออะไร รูปแบบไฟล์จึงตรวจหาไม่ได้ เบราว์เซอร์เล่นข้อมูลไม่ได้ และเครื่องมือนี้ก็เดาอัตราสุ่มตัวอย่างหรือจำนวนช่องสัญญาณไม่ได้ คุณยังดาวน์โหลดไบต์ที่ถอดรหัสแล้วได้ แต่หากต้องการฟัง จะต้องเพิ่มส่วนหัว WAV โดยใช้พารามิเตอร์จากเอกสารของ API
# FFmpeg: 16 บิต little-endian, 24 kHz, โมโน
ffmpeg -f s16le -ar 24000 -ac 1 -i speech.pcm speech.wav
# Python
import base64, wave
with wave.open('speech.wav', 'wb') as w:
w.setnchannels(1)
w.setsampwidth(2) # ตัวอย่างเสียงขนาด 16 บิต
w.setframerate(24000)
w.writeframes(base64.b64decode(pcm_base64))
หากผลลัพธ์ฟังดูเร็วเกินไป ช้าเกินไป หรือเป็นเสียงซ่า แสดงว่าอัตราสุ่มตัวอย่าง ขนาดตัวอย่าง หรือลำดับไบต์ไม่ตรงกับข้อมูล เมื่อเล่นได้แล้ว เครื่องมือ แปลงไฟล์เสียงเป็น Base64 สามารถเข้ารหัสไฟล์ WAV กลับเป็นสตริงได้หากคุณต้องการ
คำถามที่พบบ่อย
ทำไมเครื่องมือจึงเล่นเสียงของฉันไม่ได้
อาจเป็นเพราะข้อมูลเป็น PCM ดิบที่ไม่มีส่วนหัว (ดูหัวข้อด้านบน) หรือเบราว์เซอร์ของคุณไม่รองรับตัวแปลงสัญญาณ (codec) นั้น ในกรณีหลัง ไฟล์ที่ดาวน์โหลดยังคงถูกต้องและเปิดได้ในโปรแกรมเล่นสื่ออย่าง VLC
API ของฉันส่งเสียงมาเป็น Base64 หลายส่วน จะรวมกันได้อย่างไร
ถอดรหัสแต่ละส่วนเป็นไบต์ แล้วนำมาต่อกันตามลำดับ การต่อสตริง Base64 เข้าด้วยกันก่อนจะได้ผลก็ต่อเมื่อทุกส่วนยกเว้นส่วนสุดท้ายเข้ารหัสข้อมูลที่มีจำนวนไบต์เป็นพหุคูณของ 3 ซึ่งโดยทั่วไปไม่สามารถรับประกันได้ เครื่องมือนี้ถอดรหัสครั้งละหนึ่งสตริง จึงควรรวมส่วนที่ได้รับจากการสตรีมในโค้ดของคุณเอง
เสียงที่ถอดรหัสแล้วเหมือนต้นฉบับทุกประการหรือไม่
ใช่ Base64 ไม่ทำให้ข้อมูลสูญหาย ไฟล์จึงมีไบต์ตรงกับที่ถูกเข้ารหัสไว้ทุกประการ ด้วยคุณภาพและบิตเรตเท่าเดิม เครื่องมือนี้ไม่เข้ารหัสใหม่หรือแปลงรูปแบบเสียง
วาง data URI ได้หรือไม่
data:audio/...;base64, ทั้งหมด หรือวาง Base64 ล้วนที่ไม่มีส่วนนำหน้าก็ได้ ไม่ว่าแบบใด รูปแบบไฟล์จะถูกตรวจหาจากไบต์ที่ถอดรหัสแล้วเสียงของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่
ไม่ถูกส่ง การถอดรหัส การตรวจหารูปแบบไฟล์ และการเล่นเสียงทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ