가이드

Twilio 나만의 목소리: 직접 만든 음성 합성 오디오 재생

Twilio의 Say 동사는 Amazon Polly와 Google 내장 목소리로 통화 중 텍스트를 읽습니다. 편리하지만, 그래서 IVR, 알림, 대기 안내가 수천 개 회사와 똑같이 들립니다.

Play 동사는 대신 어떤 오디오 파일이든 재생합니다. 무료 SuperClonica 엔진으로 기본 목소리, 우리 화자로 학습한 목소리, 캐릭터 목소리로 안내를 오프라인에서 만들면 Twilio가 통화에서 재생합니다. 이 가이드에서는 전화용 파일을 만드는 법, Twilio가 캐시하도록 제공하는 법, 그리고 Say가 여전히 맞는 경우를 소개합니다.

Say냐 Play냐

모든 발신자에게 같은 안내는 Play로, 주문 번호처럼 통화마다 바뀌는 글은 Say로 남겨 두세요.

  • Say: 통화 중에 Twilio가 내장 목소리로 텍스트를 말합니다. 호스팅할 것이 없습니다.
  • Play: Twilio가 내 URL에서 오디오 파일을 내려받아 재생합니다. 원하는 어떤 목소리든 됩니다.
  • Play는 MP3, WAV, AIFF, GSM, μ-law를 받고, 상대가 끊을 때까지 파일을 반복할 수 있습니다.
  • SuperClonica는 31개 언어를 말하며, 중국어는 아직 지원하지 않습니다.

목소리를 무료로 들어 보기

아무 목소리 페이지에서 안내 문장을 30~100자로 입력하고 언어를 고른 뒤 생성 버튼을 누르세요. 몇 초 만에 우리 회선이 어떻게 들릴지 알 수 있습니다. 계정은 필요 없습니다.

전화용 파일 만들기

10초 안내의 8 kHz μ-law WAV는 약 80 KB라서 큰 메뉴도 순식간에 내려받습니다.

  • 엔진 설치: python -m pip install superclonica-cpu.
  • Python에서 tts = Superclonica()로 엔진을 한 번 만들고, 안내를 음성으로 만들어 전화용으로 저장하세요: audio, rate = tts.synthesize("전화 주셔서 감사합니다. 모든 상담원이 통화 중이니 잠시만 기다려 주세요.", "F1", "ko"); sf.write("hold.wav", resample_poly(audio, 8000, rate), 8000, subtype="ULAW").
  • soundfile과 scipy.signal의 resample_poly가 필요하며, 둘 다 엔진과 함께 설치됩니다.
  • Twilio는 통화 오디오를 모두 트랜스코딩합니다. 문서는 128 kbps MP3가 저비트레이트 무손실 파일보다 나쁘게 들릴 수 있다고 경고하는데, 8 kHz μ-law WAV가 바로 그런 파일입니다.

안내 음성 제공하고 재생하기

파일은 HTTPS로, 내 서버나 오브젝트 스토리지에 두고 ETag나 Last-Modified 헤더를 달아 Twilio가 첫 재생 후 캐시하게 하세요. Twilio Python 라이브러리로 TwiML은 두 줄입니다: r = VoiceResponse(); r.play('https://example.com/audio/hold.wav', loop=0). loop 값 0은 통화가 끝날 때까지 파일을 반복합니다. 통화마다 바뀌는 글은 앱 옆에서 SuperClonica HTTP 서버를 돌리고, 웹훅에 응답하기 전에 음성을 만드세요. 짧은 문장은 데스크톱 CPU에서 1초보다 훨씬 짧으니, 반복되는 것은 캐시하세요.

자동 전화 규칙

미국에서는 2024년 FCC가 로보콜의 AI 생성 목소리를 TCPA상 인공 음성으로 본다고 결정했습니다. 따라서 자동 전화에는 녹음된 메시지와 같은 동의가 필요합니다. 모델의 기본 목소리 10개나 동의한 화자로 학습한 내 목소리처럼 권리가 있는 목소리를 쓰고, 실제 사람을 흉내 내는 목소리는 쓰지 말며, 상대에게 자동 시스템과 통화 중임을 알리세요.