[swift] Swift 음성 합성

Swift는 다양한 기능을 제공하는 현대적인 프로그래밍 언어로, 음성 합성 기능도 손쉽게 구현할 수 있습니다. 이번 글에서는 Swift를 사용하여 음성을 합성하는 방법에 대해 알아보겠습니다.

AVSpeechSynthesizer 사용하기

AVSpeechSynthesizer는 iOS 디바이스에서 음성을 합성하기 위한 클래스입니다. 다음과 같이 AVSpeechSynthesizer를 사용하여 음성을 합성할 수 있습니다.

import AVFoundation

func speak(text: String) {
    let synthesizer = AVSpeechSynthesizer()
    let utterance = AVSpeechUtterance(string: text)
    utterance.voice = AVSpeechSynthesisVoice(language: "ko-KR")

    synthesizer.speak(utterance)
}

// 사용법
speak(text: "안녕하세요, 음성 합성을 시작합니다.")

위의 코드에서 speak 함수를 사용하여 음성 합성을 시작할 수 있습니다. 함수의 매개변수로 합성하고자 하는 텍스트를 전달합니다.

AVSpeechUtterance 객체는 합성할 텍스트를 저장합니다. 여기에 언어(ko-KR)를 설정하여 한국어 음성으로 합성할 수 있습니다.

합성 설정을 마치고 speak 메서드를 호출하면 지정한 텍스트가 음성으로 합성됩니다.

음성 속도, 피치 및 볼륨 조정하기

AVSpeechUtterance 객체를 사용하여 음성 합성의 속도, 피치, 볼륨 등을 조정할 수도 있습니다. 예를 들어, 다음과 같이 음성 합성 속도를 느리게 설정할 수 있습니다.

utterance.rate = 0.5

피치를 조절하려면 다음과 같이 값을 설정합니다.

utterance.pitchMultiplier = 1.2

볼륨을 조절하려면 volume 속성을 사용합니다.

utterance.volume = 0.8

AVSpeechSynthesizerDelegate 사용하기

AVSpeechSynthesizerDelegate를 사용하여 음성 합성이 완료되었을 때 특정 동작을 실행할 수 있습니다. 다음과 같이 delegate를 설정하고 해당 메서드를 구현할 수 있습니다.

class ViewController: UIViewController, AVSpeechSynthesizerDelegate {
    let synthesizer = AVSpeechSynthesizer()

    override func viewDidLoad() {
        super.viewDidLoad()
        synthesizer.delegate = self
    }

    func speak(text: String) {
        let utterance = AVSpeechUtterance(string: text)
        utterance.voice = AVSpeechSynthesisVoice(language: "ko-KR")
   
        synthesizer.speak(utterance)
    }

    func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer,
                           didFinish utterance: AVSpeechUtterance) {
        // 합성 완료 시 동작
        print("음성 합성 완료")
    }
}

// 사용법
let viewController = ViewController()
viewController.speak(text: "안녕하세요, 음성 합성을 시작합니다.")

위의 코드에서 AVSpeechSynthesizerDelegate를 상속한 ViewController 클래스를 만들고, speechSynthesizer(_:didFinish:) 메서드를 구현하여 합성 완료 시 동작을 실행합니다.

이제 음성 합성이 완료되면 “음성 합성 완료”라는 메시지가 출력됩니다.

결론

이와 같이 Swift를 사용하여 음성을 합성하는 방법을 알아보았습니다. AVSpeechSynthesizer를 이용하여 쉽게 음성 합성 기능을 구현할 수 있으며, 속도, 피치, 볼륨 등을 조정하여 다양한 음성 효과를 적용할 수도 있습니다. 음성 합성은 iOS 애플리케이션에서 텍스트를 읽어주는 등 다양한 용도로 활용할 수 있습니다. 추가로 관련 문서를 참조하여 더 자세한 정보를 확인해보세요.

참고 자료