Cola 음성 전달
두 가지 명명된 ListenHub 음성으로 긴 중국어 스크립트를 생성하고, 각 세그먼트와 완전히 병합된 MP3 파일을 제공합니다. 이 워크플로우는 긴 입력 오류와 음성 변형 간의 우발적인 덮어쓰기를 방지하기 위해 존재합니다.
간단한 호출
스킬 호출과 첨부된 텍스트 파일을 완전한 사용자 입력으로 처리합니다. 사용자에게 분할, 붙여넣기, 업로드, 이름 변경, 다운로드 또는 병합을 요청하지 마십시오. 기본 출력은 두 음성입니다:
晓曼: 정렬된 모든 MP3 청크 + 하나의 병합된 MP3Cola: 정렬된 모든 MP3 청크 + 하나의 병합된 MP3
청크 수는 동적입니다. 고정된 수가 아닌 소스 길이와 신뢰할 수 있는 TTS 입력 크기에서 선택하십시오. 짧은 텍스트는 하나의 청크를 생성할 수 있고, 긴 팟캐스트 스크립트는 여러 개를 생성할 수 있습니다. 모든 파일이 로컬에 존재하고 각 파일이 MEDIA: 줄과 함께 제공될 때까지 성공적인 실행이 완료되지 않습니다. 사용자가 명시적으로 하나의 음성만 요청하면 해당 음성의 전체 세트를 제공하고, 그렇지 않으면 두 음성을 모두 생성하십시오.
음성 레지스트리
정확한 ListenHub 스피커 ID를 사용하십시오:
- Xiaoman / 晓曼:
chat-girl-105-cn - Cola:
chatb812x-500306f5
하나의 음성을 다른 음성으로 대체하지 마십시오. 최종 응답에서는 각 파일 그룹에 사용된 정확한 음성을 명시하십시오.
허용되는 입력
원시 텍스트 또는 첨부된 텍스트/문서 파일을 허용합니다. 입력이 팟캐스트 오디오 파일 또는 팟캐스트 URL인 경우 먼저 ASR/전사 기능을 사용하여 전사한 다음 결과 전사본을 내레이션 소스로 사용하십시오. 전사본의 순서를 유지하고 의미 있는 경우 화자 또는 섹션을 분리하십시오.
생성 전략
긴 첨부 파일이나 비공개 파일 URL을 ListenHub에 직접 보내는 대신, 섹션을 보존하는 2패스 파이프라인을 사용하십시오:
- 원래 내러티브 순서와 의미 있는 섹션 제목을 유지하면서 소스를 말할 수 있는 텍스트로 정규화합니다.
- 각 TTS 요청이 신뢰할 수 있는 입력 크기 내에 유지되고 실패한 요청을 전체 책을 다시 생성하지 않고 재시도할 수 있도록 챕터 또는 섹션 경계에서 분할합니다.
- 동일한 정렬된 청크 세트를 Xiaoman으로 한 번, Cola로 한 번 생성합니다. 음성 실행을 독립적으로 유지하여 한 음성의 실패나 재시도가 다른 음성을 대체하지 못하도록 합니다.
- 각 ListenHub 에피소드를 성공할 때까지 폴링한 다음 반환된
audioUrl을 다운로드합니다. 서비스의 개요나 요약이 아닌 생성된 오디오 URL을 사용하십시오. - 음성별 디렉터리에 청크를 저장하고 예상되는 모든 청크가 존재한 후에만 병합합니다. 두 병합된 출력의 지속 시간과 크기를 확인합니다.
- 모든 청크와 두 병합된 파일을 제공합니다. 이렇게 하면 개별 챕터 교체가 가능하고 완전한 오디오북을 재생하기 편리하게 유지할 수 있습니다.
원시 청크 텍스트를 직접 전달하는 것은 의도적입니다. ListenHub는 로컬 경로와 비공개 업로드 텍스트 URL을 유효하지 않은 소스로 거부할 수 있습니다. ListenHub 끝점이 특히 URL 또는 HTML 소스를 요구하는 경우, 이스케이프된 소스 텍스트를 article 요소 안에 포함하는 임시 HTML 문서를 생성하고 사용자의 승인을 받아 업로드한 후 결과로 나오는 가져올 수 있는 URL을 전달합니다. HTML을 대체 전송 수단으로 취급하고 직접 청크 생성을 대체하는 것이 아닙니다. HTML URL이 거부되면 직접 청크 텍스트로 돌아갑니다. 이름과 디렉터리를 분리하는 것도 동일하게 의도적입니다. 공유 출력 이름은 이전에 유효했던 음성 버전을 덮어쓸 수 있습니다.
워크플로우
- 오디오를 생성하기 전에 완전한 입력을 읽거나 전사합니다. 소스 순서와 표현을 유지합니다. 사용자가 문서를 문자 그대로 읽도록 요청하지 않는 한 Markdown 제목 구문과 같이 말하면 안 되는 마크업만 제거합니다. 스크립트의 일부인 경우 의미 있는 섹션 제목과 내레이션 큐를 유지합니다.
- 신뢰할 수 있는 입력 크기를 추정하고 동적으로 분할합니다. 섹션 경계(
##, 챕터 제목 또는 자연스러운 단락 나누기)를 선호하고, 그런 다음 초대형 섹션을 단락 경계에서 분할합니다. 필요한 만큼 많은 청크를 사용하고 11과 같은 고정된 수를 강제하지 마십시오. 0으로 채워진 인덱스를 사용하여 청크 이름을 지정합니다:00,01,02등. - 각 요청된 음성에 대해 ListenHub
create_tts를 호출합니다:language: zhtts_type: texttts_mode: direct- 선택한 스피커 ID
- 정확히 하나의 청크에 대한 원시 텍스트
- 반환된 각 에피소드를
check_status로processStatus가success가 될 때까지 폴링합니다. 반환된audioUrl을 청크 순서대로 기록합니다. 에피소드 개요를 오디오 소스로 사용하지 마십시오. 제공된 스크립트 대신 요약일 수 있습니다. - 성공한 모든 오디오 URL을 로컬로 다운로드합니다. 각 음성에 대해 별도의 디렉터리를 사용하십시오. 예:
xiaoman-listenhub-parts/00.mp3cola-listenhub-parts/00.mp3
- 번들된
scripts/merge_mp3.sh또는 동등한 FFmpeg concat 워크플로우를 사용하여 각 음성의 청크를 병합합니다. 별도의 명시적 출력 이름을 사용하십시오:全文朗读-晓曼-ListenHub合并版.mp3全文朗读-Cola-ListenHub合并版.mp3두 변형을 공유 파일 이름에 절대 쓰지 마십시오.
- 오디오 프로브로 각 병합된 파일을 확인합니다. 지속 시간과 파일 크기를 보고하고, 전달 전에 예상되는 모든 청크 파일이 존재하는지 확인합니다.
- 모든 파일(두 병합된 파일과 두 음성의 모든 분할 파일)에 대해 하나의
MEDIA: /absolute/path줄을 제공합니다. 디렉터리만 또는 병합된 버전만 제공하지 마십시오.
입력 및 오류 처리
- 로컬 첨부 파일을 ListenHub에 직접 전달할 수 없는 경우 로컬에서 읽고 청크 텍스트를 직접
create_tts에 전달하십시오. 내레이션 내용으로 로컬 경로를 전달하지 마십시오. ListenHub가 경로를 그대로 읽거나 거부합니다. - 비공개 업로드 텍스트 URL이
Invalid input at source로 거부되면 해당 URL 재시도를 중지하고 직접 청크 텍스트를 대신 사용하십시오. - 생성은 성공했지만
audioUrl다운로드가 시간 초과되면 반환된 ListenHub 에셋 호스트에 대해 재시도하고 에피소드 ID 및 URL 매핑을 유지하십시오. - 음성 생성이 실패하면 다른 음성으로 조용히 대체하지 마십시오. 실패한 음성을 보고하고 성공적으로 생성된 음성 파일을 유지하십시오.
- 음성별 새 파일 이름을 선택하여 기존 파일을 보존하십시오. 이전 음성의 병합된 파일을 덮어쓰면 유효한 전달물이 손실됩니다.
- 긴 스크립트의 경우 생성 비용이 지불될 수 있고 몇 분이 걸릴 수 있습니다. 다단계 작업으로 추적하고 두 요청된 음성 그룹, 해당 청크 및 병합된 파일이 확인된 후에만 완료된 것으로 표시하십시오.
최종 승인 확인
답변하기 전에 하나의 TTS 요청만 성공한 것이 아니라 전체 체인을 확인하십시오:
- 원시 텍스트 또는 팟캐스트 전사본이 완전히 읽혔고 섹션 순서가 유지되었습니다.
- 입력 길이에서 동적 청크 수가 선택되었으며 고정된 세그먼트 수가 가정되지 않았습니다.
- 두 요청된 음성에 대해 동일하게 동적으로 선택된 청크 인덱스가 존재합니다.
- 모든 청크에 대해 다운로드된 비어 있지 않은 MP3 파일이 있습니다.
- 각 음성에 대해 공유 파일 이름이나 덮어쓰기 없이 별도의 병합된 MP3가 있습니다.
- FFprobe 또는 동등한 오디오 프로브가 두 병합된 파일의 지속 시간과 크기를 보고합니다.
- 최종 응답은 두 개의 정확한 스피커 ID를 식별하고 모든 청크 및 모든 병합된 파일에 대해 하나의
MEDIA:줄을 포함합니다.
어느 확인이라도 실패하면 계속 작업하거나 특정 실패한 음성/청크를 보고하십시오. 전체 전달을 주장하지 마십시오.
전달 체크리스트
- 모든 생성에 올바른 스피커 ID 사용
- 모든 소스 섹션이 순서대로 포함됨
- 각 요청된 음성에 대해 모든 청크가 다운로드됨
- 병합된 파일에 고유한 음성별 이름이 있음
- 지속 시간 및 파일 크기 확인됨
- 모든 청크 파일과 두 병합된 파일이
MEDIA:줄로 제공됨