콘텐츠 운영, 교육 자료 또는 제품 설명을 해본 사람이라면, 아마 이런 과정을 본 적이 있을 것입니다: 문안이 확정된 후 성우 동료에게 보내고, 일정 배정을 기다리고, 수정을 기다리고, 내보내기를 기다립니다; 오디오를 받은 후에는 다시 클라우드 디스크나 객체 스토리지에 업로드하고, 마지막으로 링크를 페이지에 다시 입력합니다.
각 단계는 어렵지 않지만, 과정이 많아지면 수십 초짜리 오디오 한 개도 하루 이틀이 걸릴 수 있습니다. 특히 내부 교육, 기능 업데이트, 이벤트 공지와 같은 콘텐츠는 실제로 필요한 것이 복잡한 제작이 아니라, 명확하고 안정적이며 바로 재생할 수 있는 오디오인 경우가 많습니다.

문안, 생성, 업로드 및 배포가 서로 다른 도구에 흩어져 있으면, 더빙 과정이 쉽게 길어집니다.
¶ 문제점은 “생성”에만 있지 않습니다
많은 TTS 데모는 매우 단순해 보입니다: 텍스트를 입력하면 오디오를 얻습니다. 하지만 실제 업무에 적용하면, 몇 가지 문제가 더 발생합니다:
- 인터페이스가 오디오 데이터를 반환한 후에도, 직접 파일을 저장하고 스토리지에 업로드하여 링크를 생성해야 합니다;
- 긴 텍스트는 생성 시간이 길어지고, HTTP 연결이 끊어진 후에는 작업 상태를 판단하기 어렵습니다;
- 운영 담당자는 어떤 오디오가 이미 완료되었는지 알아야 하고, 개발자는 매번 생성 비용도 기록해야 합니다;
- MP3, WAV, PCM은 대상 사용 시나리오가 다르므로, 모두 같은 설정을 사용할 수는 없습니다.
따라서 더 실용적인 목표는 “한 구간의 음성을 생성할 수 있는 것”이 아니라, 텍스트를 재생 가능하고, 추적 가능하며, 계속 전달할 수 있는 오디오 결과로 바꾸는 것입니다.
¶ 하나의 인터페이스로 재생 가능한 링크 얻기
AceDataCloud의 Fish TTS 인터페이스 주소는 다음과 같습니다:
POST https://api.acedata.cloud/fish/tts
요청 헤더에는 플랫폼 Token을 사용합니다:
authorization: Bearer {token}
content-type: application/json
최소 요청에는 텍스트와 출력 형식만 제공하면 됩니다:
{
"text": "产品更新已经完成,欢迎体验新功能。",
"format": "mp3"
}
생성이 성공하면 응답에서 audio_url을 제공합니다. 이는 플랫폼 CDN을 가리키며, 웹 플레이어에 직접 넣을 수도 있고 메시지 알림, 비디오 합성 또는 소재 관리 시스템에 전달할 수도 있습니다. 응답의 cost는 이번 실제 사용량을 기록하는 데 사용할 수 있습니다.
이 단계에서는 흔히 발생하는 “바이너리 수신—객체 스토리지 업로드—접근 주소 설정”을 생략할 수 있습니다. 다만 정식 업무에서는 여전히 자신의 아카이빙 전략에 따라 오디오 사본을 보관하는 것을 권장하며, 외부 링크를 유일한 백업으로 간주해서는 안 됩니다.
¶ 먼저 올바른 출력 형식을 선택하세요
세 가지 일반적인 형식은 각각 중점을 두는 부분이 다릅니다:
- MP3: 용량이 작아 웹 재생, 메시지 공유 및 대부분의 콘텐츠 배포에 적합합니다;
- WAV: 편집, 믹싱 및 라우드니스 처리 과정에 들어가기에 적합합니다;
- PCM: 클라이언트 또는 오디오 처리 파이프라인에서 추가 처리를 하기에 적합합니다. 인터페이스는 WAV 컨테이너의 16 bit PCM을 반환합니다.
또한 sample_rate로 샘플링 레이트를 설정하고, mp3_bitrate로 64, 128, 192 kbps 중에서 선택할 수 있습니다. 처음부터 최고 사양을 추구하기보다는, 먼저 배포 채널에 따라 표준을 정해 이후의 반복 인코딩을 줄이는 편이 낫습니다.
¶ 긴 텍스트에서는 계속 연결을 기다리지 마세요
몇 문장 정도의 짧은 텍스트라면 동기 호출로도 보통 충분합니다. 하지만 글, 강의 및 긴 내레이션은 십여 초 또는 그 이상이 필요할 수 있으며, 프런트엔드가 계속 기다리면 네트워크 변동으로 인해 중복 제출과 불명확한 상태가 발생하기 쉽습니다.
이때 요청에 callback_url을 추가할 수 있습니다:
{
"text": "这里是一段较长的课程旁白……",
"format": "mp3",
"callback_url": "https://example.com/webhooks/fish-tts"
}
인터페이스는 먼저 task_id와 started_at을 반환하고, 작업이 완료된 후 최종 결과를 콜백 주소에 POST합니다. Fish Tasks API를 사용해 작업을 능동적으로 조회할 수도 있습니다. callback_url은 AceDataCloud가 공식 인터페이스에 추가한 확장 기능으로, 배치 및 긴 텍스트 업무에 더 적합합니다.

작업 제출 후 비동기로 생성되며, 결과는 자동으로 콘텐츠 시스템으로 돌아오므로 운영 담당자는 계속 페이지를 지켜볼 필요가 없습니다.
¶ 단순하지만 충분한 작업 흐름
실제 적용 시에는 과정을 여섯 단계로 제어할 수 있습니다:
- 콘텐츠 담당자가 문안을 제출하고 확인합니다;
- 백엔드가 Fish TTS를 호출합니다;
- 짧은 콘텐츠는 동기적으로 결과를 받고, 긴 콘텐츠는
task_id를 저장합니다; audio_url과cost를 받은 후 작업 기록을 업데이트합니다;- 오디오는 청취 테스트, 페이지 플레이어 또는 후속 비디오 과정으로 들어갑니다;
- 실패한 작업은 오류 코드에 따라 처리하여 무조건적인 반복 제출을 피합니다.
작업 테이블에는 최소한 다음을 기록하는 것이 좋습니다: 업무 콘텐츠 ID, 텍스트 버전, 출력 형식, 작업 ID, 오디오 주소, 비용, 상태 및 완료 시간. 이렇게 하면 문안 수정 후 어느 버전의 오디오에 해당하는지 명확히 알 수 있습니다.
¶ 생성 완료는 바로 게시 가능함을 의미하지 않습니다
AI 더빙은 표준화된 콘텐츠의 전달 시간을 단축할 수 있지만, 정식 외부 공개 콘텐츠는 여전히 청취 확인이 필요합니다. 숫자, 영문 약어, 고유 명사, 끊어 읽기 및 음량을 중점적으로 확인해야 합니다. 브랜드 광고, 캐릭터 연기 등 감정 요구가 높은 콘텐츠는 인력 녹음이나 추가 후반 작업이 필요할 수도 있습니다.
더 적합한 역할 분담은 다음과 같습니다: 인터페이스는 안정적인 생성과 링크 전달을 담당하고, 팀은 텍스트, 청감 및 게시 판단을 담당합니다. 이렇게 하면 효율을 높일 수 있을 뿐 아니라 자동화 자체를 품질 보증으로 여기지 않게 됩니다.

