speech.wav가 최초의 유용한 결과물이었습니다. 이 파일은 44,160 샘플을 24,000 Hz로 포함하는 모노 PCM 파일입니다. 이는 “Hello from Phonon.”이라는 음성으로 1.84초 분량의 오디오에 해당합니다.
저는 CPU를 사용하여 Phonon의 공개된 영어 체크포인트로 이를 생성했습니다. 이 파일을 얻는 것이 다른 장치에서 가져온 리더보드 지연 시간 수치를 사용하는 것보다 저에게 더 유용한 출발점입니다.
Waveform of the generated Hello from Phonon clip, with seconds on the horizontal axis and normalized PCM amplitude on the vertical axis.
실제 생성된 샘플입니다. 이 그래프는 합성 속도나 음성 품질 점수가 아닌 결과 오디오를 보여줍니다. 이미지 출처: 작성자.
생성된 WAV 듣기.
새로운 Hugging Face 게시물에서는 Phonon의 최근 출시와 통합 옵션에 대해 재검토합니다. [1] 이 모델은 이미 해당 기사보다 먼저 사용 가능했지만, 본 가이드는 공개된 도구에서 파일로 이어지는 구체적인 경로를 확인했습니다.
저는 ptts 0.6.0과 리비전 92741c5b07d085ff840e26fea8ce43110b87852f의 phonon-31m-en 체크포인트를 사용했습니다. 런타임의 Python 패키지가 네이티브 구현을 감싸고 있어, 이 경로는 PyTorch를 설치할 필요가 없습니다. [2]
사용하려면 uv, 게시된 wheel에서 지원하는 Python 버전, 그리고 지원되는 CPU 플랫폼이 필요합니다. 첫 실행에는 공개 모델 파일에 대한 접근 권한이 필요합니다. 새로운 작업 디렉토리에서 제가 사용한 실제 명령어는 다음과 같습니다:
uvx --from ptts==0.6.0 ptts --lang en --device cpu --seed 13 \
--model hf://gradium/phonon-31m-en@92741c5b07d085ff840e26fea8ce43110b87852f \
'Hello from Phonon.' -o speech.wav
결과는 다음과 같았습니다:
마지막 숫자는 생성된 클립의 지속 시간입니다. 이것은 명령어가 생성하는 데 걸린 시간이 아닙니다. 모델 다운로드 및 로딩 단계 또한 최초 오디오까지 걸리는 시간에 대한 주장 범주 밖에 있습니다.
체크포인트의 기본 음성을 사용했습니다. 이 테스트에서는 보이스 클로닝(voice cloning), 계정 생성 또는 호스팅된 추론 요청(hosted inference request)은 없었습니다.
언어 플래그는 실제로 작동합니다 (The language flag does real work)
저는 또한 --lang 없이 명령을 시도했습니다. 이는 합성(synthesis) 전에 상태 코드 2로 종료되었고 언어를 요청했습니다.
CLI는 토큰화(tokenization) 전에 텍스트를 정규화(normalizes)하므로, 해당 단계를 건너뛰려면 명시적인 언어 또는 none이 필요합니다. 도움말에는 정규화되는 언어 목록이 나와 있지만, 이 목록을 모든 체크포인트가 그 모든 언어를 지원한다는 약속으로 해석해서는 안 됩니다. [2] 여기서의 체크포인트는 특히 영어 모델입니다.
모델 카드에는 이 영어 체크포인트에 대해 Apache-2.0이 나열되어 있습니다. [3] Phonon 계열에는 다른 라이선스를 가진 다른 체크포인트들이 포함됩니다. 한 모델의 라벨을 전체 계열에 걸쳐 적용하기보다는, 배포할 특정 파일들을 확인하십시오.
파일을 기반으로 구축하기 전에 검사합니다 (Inspect the file before building around it)
speech.wav를 포함하는 디렉토리에서 제가 실행한 표준 라이브러리 검사입니다:
import wave
with wave.open('speech.wav', 'rb') as audio:
...
이것이 출력되었습니다:
channels: 1
sample rate: 24000
frames: 44160
...
또한 PCM 샘플들이 모두 0이 아닌지 확인했습니다. 읽을 수 있고 무음(non-silent)인 WAV 파일은 기본적인 출력 경로를 확인시켜 줄 뿐이며, 명료성(intelligibility), 발음 품질 또는 모델 순위를 확립하는 것은 아닙니다.
첫 번째 명령은 모델 캐시를 채웠습니다. 그런 다음 동일한 텍스트와 시드(seed)를 사용하여 캐시된 체크포인트 디렉토리를 모델 위치로 직접 전달하여 실행했고, 이 로컬 폴더 실행도 완료되었습니다. 저는 기기의 네트워크를 비활성화하지 않았으므로, 이것은 네트워크 격리 테스트가 아닙니다.
Dishant의 Phonon TTS: 64 MB, Six Milliseconds, One Licence Trap은 유용한 패키징 질문을 제기합니다: 실제로 배포되는 체크포인트와 지원 파일은 무엇인가? [4] 저는 이 실행을 하나의 공개 영어 체크포인트로 유지하고 결과 파일을 검증했습니다. 다음 통합 결정은 사용자의 애플리케이션에 따라 달라져야 합니다: 전체 클립을 저장할지, 아니면 오디오가 이용 가능해짐에 따라 스트림으로 소비할지입니다. 이 명령어는 파일 경로를 확인합니다.
참고 자료 (References)
- Gradium 및 Hugging Face 기여자, Phonon TTS 심층 분석.
- Gradium, ptts 런타임 및 통합 문서, 그리고 PyPI의 ptts 0.6.0.
- Gradium, 고정된 영어 체크포인트.
- Dishant, Phonon TTS: 64 MB, Six Milliseconds, One Licence Trap. 제3자 지연 시간 주장은 여기서 재현되지 않았습니다.
에셋 출처 (Asset credits)
생성된 클립의 원본 파형입니다. 음성은 Gradium의 공개 Phonon 영어 체크포인트와 명시된 입력 텍스트의 기본 음성을 사용하여 합성되었으며, 연결된 WAV는 AI가 생성한 오디오입니다. 사람의 녹음이나 복제는 제공되지 않았습니다.
AI 공개 (AI disclosure)
본 기사는 AI를 사용하여 작성되었습니다.