티스토리 뷰

iOS

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

Zedd0202 2017. 3. 10. 19:02
반응형

안녕하세요! 


오늘은 Text-To-Speech를 구현해보겠습니다!


iOS 10 이상부터 사용가능해요!ㅎㅎ


어려운줄 알았는데 의외로 쉽더라구요!!


간단하게만 일단 어떤식으로 사용하는지 알려드릴게요.



let synthesizer = AVSpeechSynthesizer()

let utterance = AVSpeechUtterance(string: "your string")

utterance.voice = AVSpeechSynthesisVoice(language: "ko-KR")


utterance.rate = 0.4

synthesizer.speak(utterance)


기본 코드입니다. 

자, 이제 코드로 사용해 볼까요?

저는 텍스트뷰에 제가 글을 쓰고 말하기 버튼을 누르면 그 글을 읽어주는 앱을 만들어보려고 해요 ㅎㅎ


텍스트 뷰와 버튼을 추가해주세요.


그리고 텍스트뷰의 텍스트를 가져와야하므로 텍스트뷰의 @IBOutlet변수와 말하기버튼의 @IBAction변수가 필요하겠죠?

그리고 @IBAction에 위 코드를 넣어주면!!

오류가 나게 됩니다.



오류를 고치는 방법은..

iOS 에서 TTS를 사용할 때는 반드시!!!!!!!!!!!!!

AVFoundation을 import해주어야 합니다.


참고로 저 

        utterance.voice = AVSpeechSynthesisVoice(language: "ko-KR")

부분의 language는 바꿀 수 있어요!

 language 목록입니다.



 

Arabic (Saudi Arabia) - ar-SA
Chinese (China) - zh-CN
Chinese (Hong Kong SAR China) - zh-HK
Chinese (Taiwan) - zh-TW
Czech (Czech Republic) - cs-CZ
Danish (Denmark) - da-DK
Dutch (Belgium) - nl-BE
Dutch (Netherlands) - nl-NL
English (Australia) - en-AU
English (Ireland) - en-IE
English (South Africa) - en-ZA
English (United Kingdom) - en-GB
English (United States) - en-US
Finnish (Finland) - fi-FI
French (Canada) - fr-CA
French (France) - fr-FR
German (Germany) - de-DE
Greek (Greece) - el-GR
Hindi (India) - hi-IN
Hungarian (Hungary) - hu-HU
Indonesian (Indonesia) - id-ID
Italian (Italy) - it-IT
Japanese (Japan) - ja-JP
Korean (South Korea) - ko-KR
Norwegian (Norway) - no-NO
Polish (Poland) - pl-PL
Portuguese (Brazil) - pt-BR
Portuguese (Portugal) - pt-PT
Romanian (Romania) - ro-RO
Russian (Russia) - ru-RU
Slovak (Slovakia) - sk-SK
Spanish (Mexico) - es-MX
Spanish (Spain) - es-ES
Swedish (Sweden) - sv-SE
Thai (Thailand) - th-TH
Turkish (Turkey) - tr-TR
출처: http://devsc.tistory.com/43 [You Know Programing?]





자, 이제 실행시켜 볼까요?
시뮬레이터로 하든 폰으로 하든 둘 다 잘돼요!!ㅎㅎ

아주 잘되죠?!

ㅎㅎ

근데 여자목소리길래 남자로 바꾸는 방법을 찾다가...


바꿀 수는 없나보네요 ㅠㅠ

대신 Pitch를 조절할 수 있답니다.


utterance.pitchMultiplier = 0.5

이 pitchMultiplier는 



0.5~2사이의 값을 가지고 기본값은 1인가 보네요 ㅎㅎ


0.5를 주게되면 남자목소리는 아니지만 


낮은 여자목소리?를 들을 수 있답니다!!



도움이 되었으면 좋겠어요🇰🇷🎗




반응형