Text To Speech를 아시나요? TTS는 전부터 우리와 함께 했던 기술 중 하나에요. 바로 텍스트를 음성으로 바꿔주는 것입니다.
TTS를 위한 오픈소스들도 많지만 iOS에서 기본 제공되는 프레임워크를 통해서도 쉽게 구현이 가능합니다.
정말 짧고 쉽게 가능해요..!
단, 여기서 주의 할 점은
핸드폰이 무음모드이면 소리가 들리지 않습니다! 무음모드를 해제하고 진행해주세요!
구현 방법에 대해서는 일단 애플 공식 문서에 잘 정리되어 있어요.
일단 AVFoundation을 import 해주셔야 합니다.
import AVFoundation
TTS를 위해서는 AVSpeechSynthesizer와 AVSpeechUtterance 클래스의 인스턴스가 필요합니다.
AVSpeechSynthesizer는 아래와 같은데요. 아래에서 보다 싶이 text utterance가 필요한 것을 확인할 수 있고, 이 utterance는 아래의 AVSpeechUtterance를 통해 만들 수 있습니다.
위의 AVSpeechSynthesizer 인스턴스를 만든 뒤에
AVSpeechUtterance를 통해 읽을 텍스트와 언어를 지정해주고 rate를 통해 속도를 조절합니다.
그리고 이 값을 AvSpeechSynthesizer로 초기화한 synthesizer의 speak 메소드로 넘겨주면 끝!
let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "안녕")
utterance.voice = AVSpeechSynthesisVoice(language: "ko-KR")
utterance.rate = 0.4
synthesizer.stopSpeaking(at: .immediate)
synthesizer.speak(utterance)
저 AVSpeechSynthesisVoice(language: "ko-KR")의 language 부분은 변경이 가능한데요.
이 외에도 지원되는 언어는 이 링크를 확인해주시면 됩니다.
그리고 언어는 BCP 47 code를 통해 표기하시면 됩니다.
위의 방식으로는 젊은 여성 목소리만 이용가능해서,
이러한 설정 값을 바꿀수는 없을까 찾아보니 목소리의 높이 조절 정도만 가능하고 성별, 나이 등을 바꿀 순 없더라고요.
그래도 뭔가 있지 않을까하여 계속 탐색하다보니 이렇게 gender, age를 설정할 수 있는 AVSpeechSynthesisProviderVoice가 있더라고요.
하지만 이 친구는...macOS 13부터 가능해서 지금 당장 사용할 수 없었습니다...까비
이 친구는 AVSpeechSynthesisProviderAudioUnit과 함께 사용되는거 같더라구요.
이 공식 문서를 활용하여 나중에 13으로 업데이트 한다면 꼭 시도 해봐야겠어요!!