ตัวแปลง Base64 เป็นไฟล์เสียง

วางเสียง Base64 จากการตอบกลับของบริการแปลงข้อความเป็นเสียงพูด จาก data URI หรือจากข้อมูล JSON เครื่องมือจะระบุรูปแบบไฟล์ เล่นเสียงในเบราว์เซอร์ และบันทึกเป็นไฟล์เสียง

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. วางเสียง Base64 หรือ data URI เช่น data:audio/mpeg;base64,... ลงในช่องอินพุต
  2. ตรวจสอบรูปแบบไฟล์ที่ตรวจพบ แล้วกดเล่นในเครื่องเล่นเสียง
  3. กด “ดาวน์โหลด” ไฟล์จะได้นามสกุลที่ตรงกับรูปแบบที่ตรวจพบ เช่น .mp3 หรือ .wav

การถอดรหัสผลลัพธ์จากบริการแปลงข้อความเป็นเสียงพูด

บริการแปลงข้อความเป็นเสียงพูดที่ตอบกลับเป็น JSON ไม่สามารถใส่เสียงแบบไบนารีลงในการตอบกลับได้ จึงต้องเข้ารหัสไว้ ตัวอย่างเช่น Google Cloud Text-to-Speech จะส่งเสียงพูดกลับมาเป็นสตริง Base64 ในฟิลด์ชื่อ audioContent ตามการเข้ารหัสที่คุณร้องขอ เช่น MP3 หรือ OGG Opus ส่วน API ด้านเสียงและแชตบอตอื่น ๆ ใช้ฟิลด์อย่าง audio, data หรือ audio_base64

วางค่าที่นี่เพื่อฟังผลลัพธ์ขณะเปรียบเทียบเสียงพูด ความเร็วในการพูด หรือพรอมต์ ให้คัดลอกเฉพาะสตริงระหว่างเครื่องหมายคำพูด การแยกวิเคราะห์ JSON ก่อนจะช่วยไม่ให้ติดเครื่องหมายคำพูดหรืออักขระที่ถูก escape อย่าง \/ มาด้วย

รูปแบบไฟล์เสียงที่ตรวจหาได้

รูปแบบไฟล์จะถูกระบุจากไบต์แรก ๆ ของข้อมูลที่ถอดรหัสแล้ว ชนิด MIME ที่ขาดหายหรือไม่ถูกต้องจึงไม่เป็นปัญหา

รูปแบบลายเซ็นBase64 ขึ้นต้นด้วย
MP3แท็ก ID3 หรือส่วนหัวเฟรม MPEGSUQz หรือโดยมากเป็น //
WAVRIFF ... WAVEUklGR
OGG (Vorbis, Opus)OggST2dnUw
FLACfLaCZkxhQ
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 ล้วนที่ไม่มีส่วนนำหน้าก็ได้ ไม่ว่าแบบใด รูปแบบไฟล์จะถูกตรวจหาจากไบต์ที่ถอดรหัสแล้ว
เสียงของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่

ไม่ถูกส่ง การถอดรหัส การตรวจหารูปแบบไฟล์ และการเล่นเสียงทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ