티스토리 뷰

iOS

iOS) TTS 구현 (Text-To-Speech)

LUCASFOR 2021. 2. 19. 16:07

첫 블로그 포스팅입니다. 

개발을 하면서 유용했던 부분이나 쓸만한 팁들을 공유하고자 합니다.

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

 

Apple Developer Documentation

 

developer.apple.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함