Software/Swift

iOS 프로그래밍에서 음성합성 사용하기.

초인로크 2018. 4. 8. 17:54
반응형

커뮤니케이션에서 필요한 요소 중의 하나가 음성으로 표현하는 것 일 것이다.

이전까지는 Objective-C 만으로 프로그래밍 하다가 Swift 프로그래밍 해 봤다.

iOS 7 부터 AVSpeechSynthesizer 클래스를 공개하여,

다른 부가적인 소프트웨어를 사용하지 않더라도 독자적으로 음성합성이 가능하도록 되어있다.

우선 AVSpeechSynthesizer를 사용하기 위해서는 "import AVFoundation" 를 먼저 해 주어야 한다.

그 다음에는 아래와 같이 설정 해 주면 간단히 실행 가능하다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func speechiOS(sentence: String, languageCode: String){
    //AVSpeechSynthesizer의 초기화.
    let speech = AVSpeechSynthesizer()
        
    //음성합성으로 읽어내고 싶은 문장을 입력한다.
    let utterance = AVSpeechUtterance(string: sentence)
        
    //언어코드를 입력한다.
    utterance.voice = AVSpeechSynthesisVoice(language: languageCode)
      
    //읽는 속도
    utterance.rate = 0.5
        
    //목소리의 높낮이
    utterance.pitchMultiplier = 1
        
    //음성 볼륨
    utterance.volume = 1.0
        
    //문장 읽기
    speech.speak(utterance)
}
cs


에라이 모르겠다 하는 사람은, 

Xcode - File - New - Project - Single View App 으로 프로젝트를 만들고,

아래의 소스를 따라 쳐 보아도 실행이 될 것이다.

(실행하게 되면 단순한 흰 바탕에 "안녕하세요." 라는 말이 들리고 끝난다.)

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
//  ViewController.swift
//  AVSpeechSynthesizer
//
//  Created by rocke on 2018/04/08.
//  Copyright © 2018 rocke. All rights reserved.
//
 
import UIKit
import AVFoundation
 
class ViewController: UIViewController {
 
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        speechiOS(sentence: "안녕하세요.",languageCode: "ko-KR")
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func speechiOS(sentence: String, languageCode: String){
        //AVSpeechSynthesizer의 초기화.
        let speech = AVSpeechSynthesizer()
        
        //음성합성으로 읽어내고 싶은 문장을 입력한다.
        let utterance = AVSpeechUtterance(string: sentence)
        
        //언어코드를 입력한다.
        utterance.voice = AVSpeechSynthesisVoice(language: languageCode)
        
        //읽는 속도
        utterance.rate = 0.5
        
        //목소리의 높낮이
        utterance.pitchMultiplier = 1
        
        //음성 볼륨
        utterance.volume = 1.0
        
        //문장 읽기
        speech.speak(utterance)
    }
 
}
 
 
cs


반응형