메인 콘텐츠로 건너뛰기

기본적인 음성 합성

아래의 talk.php는 텍스트에서 음성을 합성해 WAV 파일로 출력하는 샘플입니다.
PHP FFI는 웹 서버 환경(FPM 등)에서는 통상 무효화되어 있습니다. 이 스크립트는 php talk.php처럼 CLI에서 실행하세요.
실행:

1단계로 음성 합성 (tts 메서드)

createAudioQuery + synthesis의 2단계를 생략하고 싶은 경우 tts() 메서드를 사용할 수 있습니다:

카타카나 표기로 음성 합성

AquesTalk 풍의 카타카나 표기에서도 합성할 수 있습니다:

사용자 사전 사용

커스텀 단어의 읽는 법을 등록하려면 UserDict를 사용합니다:

AudioQuery 조정

createAudioQuery로 획득한 JSON을 조정한 뒤 합성함으로써 억양이나 템포 등을 세밀하게 제어할 수 있습니다:

액센트 구 획득

텍스트의 액센트 구 정보를 획득해 확인·편집할 수 있습니다:

GPU 모드 사용

GPU를 사용할 수 있는 환경에서는 AccelerationMode::Gpu를 지정하면 고속화할 수 있습니다:

여러 음성 모델 사용

여러 .vvm 파일을 로드하고, 스타일 ID를 전환함으로써 여러 캐릭터 보이스를 구분하여 사용할 수 있습니다:
같은 ID의 모델이 이미 로드되어 있는 경우의 동작은 loadVoiceModel()의 두 번째 인수에 OnExistingVoiceModelId로 지정할 수 있습니다. 기본값인 Error는 예외를 던지고, Reload는 다시 로드하며, Skip은 아무것도 하지 않습니다:

프레임 단위로 PCM 생성

createAudioFeature()로 생성한 AudioFeature를 프레임 범위별로 slice()하여 render()하면, 긴 문장도 조금씩 음성 데이터로 만들 수 있습니다. 아래는 약 0.3초씩 PCM을 출력하는 예입니다:
render()의 출력은 WAV가 아닌 16-bit PCM 원시 데이터입니다. 이 방법에는 VVM v2 모델이 필요합니다. C API에는 AudioFeature 생성과 범위 render 기능이 있지만, 고수준 streaming_synthesis API는 없습니다.
마지막 수정일 2026년 10월 27일