Base64'ten Sese Dönüştürücü

Bir metin okuma (TTS) yanıtından, data URI'den veya JSON yükünden aldığınız Base64 sesi yapıştırın. Araç biçimi belirler, sesi tarayıcıda çalar ve ses dosyası olarak kaydeder.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Base64 sesi veya data:audio/mpeg;base64,... gibi bir data URI'yi girdi kutusuna yapıştırın.
  2. Algılanan biçimi kontrol edin ve ses oynatıcısında oynat düğmesine basın.
  3. Dosyayı indirin. Dosya, algılanan biçimle eşleşen .mp3 veya .wav gibi bir uzantı alır.

Metin okuma çıktısını çözme

JSON ile yanıt veren metin okuma hizmetleri ikili ses verisini yanıta doğrudan koyamaz, bu yüzden onu kodlar. Örneğin Google Cloud Text-to-Speech, konuşmayı istediğiniz kodlamada (MP3 veya OGG Opus gibi) audioContent adlı bir alanda Base64 dizesi olarak döndürür. Diğer ses ve sohbet botu API'leri audio, data veya audio_base64 gibi alanlar kullanır.

Farklı sesleri, konuşma hızlarını veya istemleri karşılaştırırken sonucu dinlemek için değeri buraya yapıştırın. Yalnızca tırnak işaretleri arasındaki dizeyi kopyalayın; JSON'u önce ayrıştırmak, tırnak işaretlerinin veya \/ gibi kaçışlı karakterlerin araya karışmasını önler.

Algılanan ses biçimleri

Biçim, çözülen verinin ilk baytlarından tanınır; bu nedenle eksik veya yanlış bir MIME türü sorun yaratmaz:

BiçimİmzaBase64 başlangıcı
MP3ID3 etiketi veya bir MPEG çerçeve başlığıSUQz veya genellikle //
WAVRIFF ... WAVEUklGR
OGG (Vorbis, Opus)OggST2dnUw
FLACfLaCZkxhQ
M4A (AAC)M4A markalı ftyp kutusudeğişir (bir boyut alanıyla başlar)

Ham PCM: ses çalmadığında

Bazı ses API'leri, özellikle gerçek zamanlı ve akış tabanlı olanlar, dosya başlığı olmadan ham PCM örnekleri gönderir; bunlar genellikle 16 veya 24 kHz'de 16 bit monodur. Telefon akışları da benzer şekilde başlıksız 8 kHz μ-law ses taşır. Başlık olmadığında baytlarda ne olduklarını belirten hiçbir şey yoktur: biçim algılanamaz, tarayıcılar veriyi çalamaz ve bu araç örnekleme hızını veya kanal sayısını tahmin edemez. Çözülen baytları yine de indirebilirsiniz, ancak dinlemek için API belgelerindeki parametreleri kullanarak bir WAV başlığı eklemeniz gerekir:

# FFmpeg: 16 bit little-endian, 24 kHz, mono
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 bit örnekler
    w.setframerate(24000)
    w.writeframes(base64.b64decode(pcm_base64))

Sonuç çok hızlı, çok yavaş veya cızırtı gibi geliyorsa örnekleme hızı, örnek boyutu veya bayt sırası veriyle eşleşmiyordur. Ses çalmaya başladığında, dize olarak ihtiyacınız varsa WAV dosyasını Sesten Base64'e aracıyla yeniden kodlayabilirsiniz.

Sıkça sorulan sorular

Araç sesimi neden çalamıyor?

Ya veri başlıksız ham PCM'dir (yukarıya bakın) ya da tarayıcınız codec'i desteklemiyordur. İkinci durumda indirilen dosya yine de doğrudur ve VLC gibi bir medya oynatıcıda açılır.

API'm sesi çok sayıda Base64 parçası hâlinde gönderiyor. Bunları nasıl birleştiririm?

Her parçayı baytlara çözün ve sırayla birbirine ekleyin. Base64 dizelerini önce birleştirmek, ancak sonuncusu hariç her parça 3 baytın katı kadar veri kodluyorsa işe yarar ve genellikle buna güvenemezsiniz. Bu araç tek seferde bir dizeyi çözer; bu nedenle akışla gelen parçaları kendi kodunuzda birleştirin.

Çözülen ses orijinaliyle aynı mı?

Evet. Base64 kayıpsızdır; dosya, kodlanmış baytların tam olarak aynısını aynı kalite ve bit hızıyla içerir. Araç sesi yeniden kodlamaz veya dönüştürmez.

Data URI yapıştırabilir miyim?
Evet. data:audio/...;base64, dizesinin tamamını ya da öneksiz ham Base64'ü yapıştırın. Her iki durumda da biçim, çözülen baytlardan algılanır.
Ses dosyam bir sunucuya gönderiliyor mu?

Hayır. Kod çözme, biçim algılama ve oynatma tamamen tarayıcınızda gerçekleşir.