Jak używać
- Wklej dźwięk w Base64 lub data URI, np. data:audio/mpeg;base64,..., w pole wejściowe.
- Sprawdź wykryty format i naciśnij przycisk odtwarzania w odtwarzaczu audio.
- Pobierz plik. Otrzyma rozszerzenie odpowiadające wykrytemu formatowi, np. .mp3 lub .wav.
Dekodowanie wyniku syntezy mowy
Usługi zamiany tekstu na mowę, które odpowiadają w formacie JSON, nie mogą umieścić w odpowiedzi binarnego dźwięku, więc go kodują. Na przykład Google Cloud Text-to-Speech zwraca mowę jako ciąg Base64 w polu o nazwie audioContent, w wybranym kodowaniu, takim jak MP3 lub OGG Opus. Inne interfejsy API głosowe i chatbotowe używają pól takich jak audio, data lub audio_base64.
Wklej tutaj wartość, aby odsłuchać wynik podczas porównywania głosów, tempa mowy lub promptów. Skopiuj tylko ciąg między cudzysłowami; wcześniejsze sparsowanie JSON pozwala uniknąć przechwycenia cudzysłowów lub znaków ucieczki, takich jak \/.
Wykrywane formaty audio
Format jest rozpoznawany po pierwszych bajtach zdekodowanych danych, więc brakujący lub błędny typ MIME nie ma znaczenia:
| Format | Sygnatura | Początek Base64 |
|---|---|---|
| MP3 | Znacznik ID3 lub nagłówek ramki MPEG | SUQz lub zwykle // |
| WAV | RIFF ... WAVE | UklGR |
| OGG (Vorbis, Opus) | OggS | T2dnUw |
| FLAC | fLaC | ZkxhQ |
| M4A (AAC) | Blok ftyp z oznaczeniem M4A | zmienny (zaczyna się od pola rozmiaru) |
Surowe PCM: gdy dźwięk się nie odtwarza
Niektóre interfejsy API głosowe, zwłaszcza działające w czasie rzeczywistym i strumieniowe, wysyłają surowe próbki PCM, często 16-bitowe mono z częstotliwością 16 lub 24 kHz, bez nagłówka pliku. Strumienie telefoniczne podobnie przenoszą dźwięk μ-law 8 kHz bez nagłówka. Bez nagłówka nic w bajtach nie wskazuje, czym one są: formatu nie da się wykryć, przeglądarki nie mogą odtworzyć danych, a to narzędzie nie zgadnie częstotliwości próbkowania ani liczby kanałów. Zdekodowane bajty nadal można pobrać, ale aby je usłyszeć, trzeba dodać nagłówek WAV z parametrami podanymi w dokumentacji API:
# FFmpeg: próbki 16-bitowe 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) # próbki 16-bitowe
w.setframerate(24000)
w.writeframes(base64.b64decode(pcm_base64))
Jeśli wynik brzmi zbyt szybko, zbyt wolno lub jak szum, częstotliwość próbkowania, rozmiar próbki lub kolejność bajtów nie pasuje do danych. Gdy plik już się odtwarza, narzędzie Audio na Base64 może ponownie zakodować plik WAV, jeśli potrzebujesz go w postaci ciągu.
Najczęściej zadawane pytania
Dlaczego narzędzie nie odtwarza dźwięku?
Albo dane to surowe PCM bez nagłówka (patrz wyżej), albo przeglądarka nie obsługuje danego kodeka. W drugim przypadku pobrany plik jest nadal poprawny i otworzy się w odtwarzaczu multimedialnym, takim jak VLC.
API wysyła dźwięk w wielu fragmentach Base64. Jak je połączyć?
Zdekoduj każdy fragment do bajtów i dołączaj je po kolei. Łączenie ciągów Base64 przed dekodowaniem działa tylko wtedy, gdy każdy fragment oprócz ostatniego koduje wielokrotność 3 bajtów, na co zwykle nie można liczyć. To narzędzie dekoduje jeden ciąg naraz, więc fragmenty ze strumienia połącz we własnym kodzie.
Czy zdekodowany dźwięk jest identyczny z oryginałem?
Tak. Base64 jest bezstratny, więc plik zawiera dokładnie te bajty, które zostały zakodowane, z tą samą jakością i przepływnością. Narzędzie nie koduje dźwięku ponownie ani go nie konwertuje.
Czy można wkleić data URI?
data:audio/...;base64, albo czysty Base64 bez prefiksu. W obu przypadkach format jest wykrywany na podstawie zdekodowanych bajtów.Czy dźwięk jest wysyłany na serwer?
Nie. Dekodowanie, wykrywanie formatu i odtwarzanie odbywają się w przeglądarce.