메인 콘텐츠로 건너뛰기
본 인터페이스는 텍스트 음성 변환, 저장된 음성 호출 및 일회성 즉시 음성 복제를 제공하며, 주소는 POST https://api.acedata.cloud/fish/tts입니다.

신청 절차

Fish TTS API를 사용하려면 먼저 Ace Data Cloud 콘솔에서 API Token을 발급받아 예비용으로 보관하세요. 아직 로그인하거나 등록하지 않았다면 로그인 페이지로 자동 이동하여 등록 및 로그인을 안내하며, 완료 후 현재 페이지로 자동 돌아옵니다. 하나의 API Token으로 플랫폼의 모든 서비스를 호출할 수 있으며, 서비스별로 별도 신청할 필요가 없습니다. 최초 신청 시 무료 할당량이 제공되어 무료로 체험할 수 있으며, 할당량이 부족할 경우 콘솔에서 공통 잔액을 충전할 수 있습니다.
📘 전체 문서: Fish TTS API →

요청 헤더

요청 본문 필드

일회성 복제는 HTTPS 오디오 URL만 허용하며, MessagePack, Base64, data URI 또는 자격 증명이 포함된 URL은 허용하지 않습니다. 참고 오디오는 10–270초를 권장하며, Studio는 더 보수적인 10–60초 범위를 사용합니다.

예시 1: 최소 요청(text + format=mp3)

반환(실측):
audio_url은 이 플랫폼 CDN을 가리키며, 직접 GET으로 다운로드하거나 <audio>에서 재생할 수 있습니다. 최종 성공 응답은 최상위 cost도 반환하며, 그중 amount는 이번에 실제로 차감된 Credits입니다. 계정 할인이 있는 경우 list_amount는 할인 전 할당량을 나타냅니다. 링크는 장기간 사용할 수 있지만, 자체 스토리지에 사본을 보관하는 것을 권장합니다.

예시 2: 복제 음색 reference_id 사용

아래에서는 Fish 플랫폼의 공개 스페인어 음색 하나를 사용합니다(_id는 Fish Model Query로 검색하여 얻을 수 있습니다):
반환(실측):

예시 3: 일회성 즉시 음성 복제(references)

참고 오디오를 공개 HTTPS 주소에 배치하고, 그 안에서 실제로 말한 정확한 원문을 제공하세요. 이 음성은 이번 합성에만 사용되며 장기 모델을 생성하지 않습니다:
실측 성공 응답:

예시 3: 말하기 속도 / 볼륨 조절(prosody)

반환(실측):
speed가 1보다 크면 빨라지고, 1보다 작으면 느려집니다. volume의 단위는 dB이며, 0은 변화 없음을 나타내고, 양수는 증폭, 음수는 감쇠를 나타냅니다.

예시 5: 모델 전환 + 비트레이트 제어

HTTP 헤더 model: s1을 통해 안정형 모델로 전환하고, 요청 본문에 mp3_bitrate: 128을 추가하여 MP3 비트레이트를 제어합니다:
반환(실측):

예시 6: PCM 원시 파형

브라우저에서 실시간 연결을 수행하거나, 클라이언트에서 후속 처리(믹싱, 속도 변경)를 해야 하는 시나리오에서는 pcm 사용을 권장합니다:
반환(실측):
링크의 확장자는 요청의 format을 따릅니다: mp3는 .mp3를 얻고, wav 및 pcm은 .wav를 얻습니다(WAV 컨테이너, 16 bit PCM).

비동기 콜백(callback_url)

긴 텍스트를 한 번에 합성하는 데는 수십 초가 걸릴 수 있으며, 연결이 중단되면 재시도가 필요합니다. 요청 본문에 callback_url을 전달하면 인터페이스는 즉시 {task_id, started_at}를 반환하고, 업스트림이 실제로 완료되면 전체 결과를 POST JSON 형식으로 해당 URL에 콜백합니다. 요청 본문에는 동일한 task_id와 이번 최종 청구의 최상위 cost가 포함됩니다. 초기 작업 확인은 아직 합성이 완료되지 않았으므로 cost를 포함하지 않습니다.
즉시 반환(실측):
잠시 후 callback_url은 다음과 같은 형식으로 수신합니다:
Fish Tasks API를 사용하여 task_id로 결과를 능동적으로 가져올 수도 있습니다. 최종 상태 기록의 response.cost는 콜백의 cost와 일치하며, 자세한 내용은 해당 문서를 참조하세요.

오류 처리

  • 400 token_mismatched: 요청 매개변수가 누락되었거나 유효하지 않습니다(가장 흔한 경우는 text가 비어 있거나, format에 mp3/wav/pcm 이외의 값을 전달한 경우입니다).
  • 401 invalid_token: 인증 token이 존재하지 않거나 유효하지 않습니다.
  • 429 too_many_requests: 계정 속도 제한이 트리거되었습니다.
  • 500 api_error: 서버 내부 오류입니다.
오류 응답 예시:
매개변수 검증 오류는 message 필드에 유효하지 않은 필드를 설명합니다. 예:

결론

Fish TTS 연동의 최소 비용은 기존의 api.fish.audio/v1/tts 호출 코드에서 인증을 이 플랫폼 token으로 교체하고, 요청 본문에 명시적으로 format: "mp3"를 포함하는 것입니다. 긴 텍스트 시나리오에는 callback_url 비동기 콜백 사용을 권장합니다. 복제 음색의 reference_id를 찾으려면 Fish Model Query 및 Fish Model Get을 함께 사용하세요.