Base64 오디오 변환기

텍스트 음성 변환 응답, data URI, JSON 페이로드에서 가져온 Base64 오디오를 붙여넣으십시오. 형식을 식별하고 브라우저에서 재생하며 오디오 파일로 저장합니다.

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. Base64 오디오 또는 data:audio/mpeg;base64,... 같은 data URI를 입력란에 붙여넣습니다.
  2. 감지된 형식을 확인하고 오디오 플레이어에서 재생 버튼을 누릅니다.
  3. 파일을 다운로드합니다. .mp3나 .wav처럼 감지된 형식에 맞는 확장자가 붙습니다.

텍스트 음성 변환(TTS) 출력 디코딩하기

JSON으로 응답하는 텍스트 음성 변환 서비스는 응답에 바이너리 오디오를 그대로 넣을 수 없으므로 인코딩해서 보냅니다. 예를 들어 Google Cloud Text-to-Speech는 요청한 인코딩(MP3, OGG Opus 등)으로 만든 음성을 audioContent라는 필드에 Base64 문자열로 담아 반환합니다. 다른 음성 및 챗봇 API는 audio, data, audio_base64 같은 필드를 사용합니다.

음성, 말하기 속도, 프롬프트를 비교할 때 이 값을 여기에 붙여넣으면 결과를 바로 들어 볼 수 있습니다. 따옴표 사이의 문자열만 복사하십시오. JSON을 먼저 파싱하면 따옴표나 \/ 같은 이스케이프 문자가 딸려 오는 것을 막을 수 있습니다.

감지되는 오디오 형식

형식은 디코딩된 데이터의 첫 바이트로 인식하므로 MIME 유형이 없거나 잘못되어 있어도 상관없습니다.

형식시그니처Base64 시작 부분
MP3ID3 태그 또는 MPEG 프레임 헤더SUQz 또는 대개 //
WAVRIFF ... WAVEUklGR
OGG(Vorbis, Opus)OggST2dnUw
FLACfLaCZkxhQ
M4A(AAC)브랜드가 M4A인 ftyp 박스파일마다 다름(크기 필드로 시작)

원시 PCM: 오디오가 재생되지 않을 때

일부 음성 API, 특히 실시간 및 스트리밍 API는 파일 헤더 없이 원시 PCM 샘플을 보냅니다. 흔히 16kHz 또는 24kHz의 16비트 모노입니다. 전화 통신 스트림도 마찬가지로 헤더 없는 8kHz μ-law 오디오를 전달합니다. 헤더가 없으면 바이트만으로는 데이터의 정체를 알 수 없습니다. 형식을 감지할 수 없고, 브라우저가 재생할 수 없으며, 이 도구도 샘플링 레이트나 채널 수를 추측할 수 없습니다. 디코딩된 바이트는 다운로드할 수 있지만, 소리를 들으려면 API 문서에 나온 파라미터로 WAV 헤더를 추가해야 합니다.

# FFmpeg: 16비트 리틀 엔디언, 24kHz, 모노
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이거나(위 설명 참고), 브라우저가 해당 코덱을 지원하지 않기 때문입니다. 두 번째 경우라면 다운로드한 파일은 여전히 정상이며 VLC 같은 미디어 플레이어에서 열 수 있습니다.

API가 오디오를 여러 개의 Base64 청크로 보냅니다. 어떻게 합칩니까?

각 청크를 바이트로 디코딩한 다음 순서대로 이어 붙이십시오. Base64 문자열을 먼저 이어 붙이는 방법은 마지막 청크를 제외한 모든 청크가 3바이트의 배수를 인코딩한 경우에만 통하며, 대개 이를 보장할 수 없습니다. 이 도구는 한 번에 문자열 하나만 디코딩하므로 스트리밍된 청크는 직접 작성한 코드에서 합치십시오.

디코딩한 오디오는 원본과 똑같습니까?

예. Base64는 무손실이므로 파일에는 인코딩된 바이트가 그대로 들어 있으며 음질과 비트레이트도 같습니다. 이 도구는 오디오를 다시 인코딩하거나 변환하지 않습니다.

data URI를 붙여넣어도 됩니까?
예. data:audio/...;base64, 문자열 전체를 붙여넣거나 접두사 없는 순수 Base64를 붙여넣으십시오. 어느 쪽이든 형식은 디코딩된 바이트로 감지합니다.
오디오가 서버로 전송됩니까?

아니요. 디코딩, 형식 감지, 재생은 모두 브라우저에서 이루어집니다.