티스토리 뷰
첫 블로그 포스팅입니다.
개발을 하면서 유용했던 부분이나 쓸만한 팁들을 공유하고자 합니다.
iOS 개발을 상당히 오래해왔는데,, 매번 했던 코딩도 자주 까먹고..
기록하는 습관을 가져야하는데 ㅠㅠ
이제부터라도 블로그에 열심히 기록할 계획입니다.
자 각설하고 이번 포스팅은 바로 TTS 기능입니다.
Text To Speech 바로 진행해 보겠습니다.
먼저 프로젝트를 생성한 후 스토리보드에 간단하게 Label과 Button을 생성한 후
IBOutlet과 IBAction을 연결해줍니다.
자 그뒤에 Label에 음성으로 변환하고자하는 텍스트를 넣어주고, 버튼을 터치하면
음성으로 나오도록 해보겠습니다.
자 AVFoundation의 클래스 중에 하나인 AVSpeechSynthesizer 를 사용한 기본 코드입니다.
AVFoundation 을 꼭 import 해주셔야 에러가 발생하지 않습니다.
let utterance = AVSpeechUtterance(string: textLabel.text!)
utterance.voice = AVSpeechSynthesisVoice(language: "ko-KR")
synthesizer.speak(utterance)
그리고 이부분이 음성언어입니다. 한글로 읽어주길 원한다면 ko-KR을 넣어주시면 됩니다.
만약 다른 언어를 읽으려면 해당 언어에 맞게 국가/언어 코드를 바꿔주셔야합니다.
(영어면 en-US, 일어는 ja-JP 겠죠? ㅎㅎ)
Tip) 만약 텍스트는 영어인데 ko-KR로 설정한다면 따로 에러가 발생하진 않으나
무슨말인지 알아들을 수 없는 말로 샬라샬라하더군요.. 참고하세요
자 이제 TTS Start 버튼을 눌러보겠습니다.
네 아주 자~알! 변환이되서 소리가 들립니다.
제가 애플 문서를 찾아보니
음성을 들려주는 목소리는 각 나라마다 다릅니다.
이것을 확인 하려면
let allVoices = AVSpeechSynthesisVoice.speechVoices()
var index = 0
for theVoice in allVoices {
print("Voice[\(index)] = \(theVoice)\n")
index += 1
}
위 코드를 사용하면 각 나라,언어 별로 제공해주는 목소리가 다릅니다.
출력한번 해볼께요.
대략 37개 정도됩니다..
우리나라는 Yuna 유나 하나뿐이네요.. 이름은 이쁘지만 목소리는 그저그렇습니다..
Tip) 아이폰 설정 > 손쉬운 사용 > 콘텐츠 말하기 > 음성
여기서 다른 목소리를 다운받을 수 있더군요!!!!
이번에는 소라를 받아서 사용해보겠습니다.
자 다운받은후 다시 소스코드로 돌아와서
위에서 목소리 리스트를 출력했던 로그 이미지를 보시면
com.apple.ttsbundle.Sara-compact 이부분이 바로 고유 id입니다.
utterance.voice = AVSpeechSynthesisVoice(language: "com.apple.ttsbundle.Sora-compact")
아까 "ko-KR"을 넣었던 부분을 지워버리고 원하는 목소리의 id를 넣습니다.
이렇게하면 해당 목소리로 바뀌게 됩니다.
(소라 목소리는 더 별로입니다..유나가 괜찮은거 였네요..)
그리고 추가적으로 Apple에서는 별도의 옵션 몇가지를 제공하고있습니다.
좀 더 음성 속도를 빠르게 돌리고 싶다?
아니면 목소리 톤을 좀 더 올리고 싶다?
볼륨을 키우고 싶다?
이럴때 설정할 수 있는 옵션이 있습니다.
rate는 음성의 속도를 조절하는 부분이고 0.1~1.0 입니다. 물론 1.0으로 갈수록 빨라지겠죠?
pitchMultiplier는 음의 높이 조절입니다. 0.5~2.0까지군요 저는 1.0이 적당하게 느껴졌습니다.
음 높이를 조절하다보면 남자목소리인데 여자톤처럼 하이톤이 되더군요.. 직접 해보시길바랍니다.
utterance.rate = 0.4
utterance.pitchMultiplier = 1.0
그외에 몇가지 옵션이 더 있는데
더 필요한 기능이 있다면 아래 링크에서 사용할 기능들을 직접 확인해보시는게 좋을 것 같습니다 :)
developer.apple.com/documentation/avfaudio/avspeechsynthesizer
댓글