Swift로 iOS 앱에 자연스러운 음성 합성을
iOS의 음성 합성은 AVSpeechSynthesizer에서 시작합니다. Swift 몇 줄이면 휴대폰이 내장 목소리로 어떤 글이든 오프라인에서 무료로 읽어 줍니다. 다만 그 목소리는 사용자가 설치한 것에 따라 달라지고, 다른 모든 앱과 같은 목소리입니다.
무료 SuperClonica 엔진은 iOS나 macOS 앱에 자기만의 자연스러운 목소리를 줍니다. 방법은 두 가지로, 앱에 넣는 미리 만든 오디오 파일이나 앱이 호출하는 음성 서버입니다. 이 가이드에서는 두 방법을 Swift 코드와 함께 보여 주고, AVSpeechSynthesizer가 여전히 맞는 경우도 알려 드립니다.
iOS 앱을 말하게 하는 세 가지 방법
많은 앱이 섞어 씁니다. 인터페이스에는 앱에 넣은 대사, 사용자 텍스트에는 서버, 예비로 시스템 목소리.
- AVSpeechSynthesizer: 시스템 목소리. 오프라인이고 무료지만 사용자가 설치한 것에 따라 다릅니다.
- 앱에 넣은 오디오: 고정된 대사를 SuperClonica로 한 번 만들어 앱에 넣습니다.
- 음성 서버: 앱이 SuperClonica 서버로 텍스트를 보내고 돌아온 WAV를 재생합니다.
- SuperClonica는 31개 언어를 말하며, 중국어는 아직 지원하지 않습니다.
목소리를 무료로 골라 보기
아무 목소리 페이지에서 앱의 대사를 30~100자로 입력하고 언어를 고른 뒤 생성 버튼을 누르세요. 몇 초 만에 맞는지 들을 수 있습니다. 계정 없이 iPhone에서 바로 됩니다.
미리 만든 대사 넣기
앱에 넣은 파일은 오프라인이고 지연이 없지만, 바꾸려면 새 앱 버전이 필요합니다.
- Mac에서 엔진으로 대사마다 음성을 만드세요: python -m pip install superclonica-cpu 후 superclonica --text "다시 오신 걸 환영해요!" --voice F1 --lang ko --output welcome.mp3.
- 파일을 Xcode 프로젝트에 추가해 앱 번들에 복사되게 하세요.
- AVFoundation으로 재생하세요: player = try AVAudioPlayer(contentsOf: Bundle.main.url(forResource: "welcome", withExtension: "mp3")!); player.play()
- player는 클래스 속성에 두세요. 지역 변수인 AVAudioPlayer는 해제되자마자 멈춥니다.
내 음성 서버 호출하기
직접 관리하는 컴퓨터에서 서버를 돌리세요: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. iOS는 기본적으로 HTTPS를 요구하니 인증서 뒤에 두고, SUPERCLONICA_API_KEY를 설정해 내 앱만 쓰게 하세요. 그러면 대사 하나가 요청 하나입니다: var request = URLRequest(url: URL(string: "https://tts.example.com/synthesize")!); request.httpMethod = "POST"; request.setValue("application/json", forHTTPHeaderField: "Content-Type"); request.httpBody = try JSONEncoder().encode(["text": "주문하신 상품이 발송되었습니다.", "voice": "F1", "lang": "ko"]); let (data, _) = try await URLSession.shared.data(for: request); player = try AVAudioPlayer(data: data); player.play() 키를 Authorization 헤더로 붙이고, 반복되는 대사 데이터는 캐시하세요.
AVSpeechSynthesizer로 충분할 때
알림 읽기, 접근성 도우미, 프로토타입, 네트워크 없이 말해야 하는 앱처럼 목소리가 알아듣기만 하면 될 때는 AVSpeechSynthesizer로 충분합니다. 언어 튜터, 게임 캐릭터, 명상 가이드, 모든 사용자에게 같은 소리여야 하는 브랜드처럼 목소리가 제품의 일부라면 SuperClonica를 고르세요.