준코딩

[iOS/Swift] TTS Text to Speech 본문

프로그래밍/IOS (Swift)

[iOS/Swift] TTS Text to Speech

Ljunhyeob - App Dev 2023. 3. 29. 10:23

TTS(Text to Speech)

텍스트 문자를 읽어주는 기능이다.

 

기본적으로 제공해주는 내장 API를 사용해서 간단하게 만들 수 있다.

(음....... 간단한건 괜찮은데 읽어주는게 영....... )

 

 

시작 버튼, 정지 버튼 2개 만들고 연결해 주었습니다.

 

text는 사건의 지평선 가사를 삽입하여 테스트 진행하였습니다. 

(google에서 제공하는 기본 api와 달리 읽어주는게 엄청 불편하게 느껴졌습니다.)

 

//
//  ViewController.swift
//  TextToSpeech
//
//  Created by 이준협 on 2023/03/28.
//

import UIKit
import AVFoundation

class ViewController: UIViewController {

    @IBOutlet weak var stopBtn: UIButton!
    @IBOutlet weak var startBtn: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
       
        
        
    }

    @IBAction func startBtnClick(_ sender: Any) {
        C_TTS.shared.play("생각이 많은 건 말이야 당연히 해야 할 일이야 나에겐 우리가 지금 일순위야 안전한 유리병을 핑계로 바람을 가둬 둔 것 같지만 기억나? 그날의 우리가 잡았던 그 손엔 말이야 설레임보다 커다란 믿음이 담겨서 난 함박웃음을 지었지만 울음이 날 것도 같았어 소중한 건 언제나 두려움이니까 문을 열면 들리던 목소리 너로 인해 변해있던 따뜻한 공기 여전히 자신 없지만 안녕히 저기, 사라진 별의 자리 아스라이 하얀 빛 한동안은 꺼내 볼 수 있을 거야 아낌없이 반짝인 시간은 조금씩 옅어져 가더라도 너와 내 맘에 살아 숨 쉴 테니 여긴, 서로의 끝이 아닌 새로운 길 모퉁이 익숙함에 진심을 속이지 말자 하나 둘 추억이 떠오르면 많이 많이 그리워할 거야 고마웠어요 그래도 이제는 사건의 지평선 너머로 솔직히 두렵기도 하지만 노력은 우리에게 정답이 아니라서 마지막 선물은 산뜻한 안녕 저기, 사라진 별의 자리 아스라이 하얀 빛 한동안은 꺼내 볼 수 있을 거야 아낌없이 반짝인 시간은 조금씩 옅어져 가더라도 너와 내 맘에 살아 숨 쉴 테니 여긴, 서로의 끝이 아닌 새로운 길 모퉁이 익숙함에 진심을 속이지 말자 하나 둘 추억이 떠오르면 많이 많이 그리워할 거야 고마웠어요 그래도 이제는 사건의 지평선 너머로 저기, 사라진 별의 자리 아스라이 하얀 빛 한동안은 꺼내 볼 수 있을 거야 아낌없이 반짝인 시간은 조금씩 옅어져 가더라도 너와 내 맘에 살아 숨 쉴 테니 여긴, 서로의 끝이 아닌 새로운 길 모퉁이 익숙함에 진심을 속이지 말자 하나 둘 추억이 떠오르면 많이 많이 그리워할 거야 고마웠어요 그래도 이제는 사건의 지평선 너머로 사건의 지평선 너머로")
    }
    @IBAction func stopBtnClick(_ sender: Any) {
        C_TTS.shared.stop()
    }
    
}


class C_TTS {
    let ID = "C_TTS"
    
    static let shared = C_TTS()
    private let synthesizer = AVSpeechSynthesizer()
    
    
    internal func play(_ string: String){
        print("TTS 음성 재생 실행")
        print("읽는 문장: \(string)")
        
        
        let utterance = AVSpeechUtterance(string: string)
        utterance.voice = AVSpeechSynthesisVoice(identifier: "Yuna")
        utterance.rate = 0.5
        utterance.pitchMultiplier = 0.8
        synthesizer.stopSpeaking(at: .immediate)
        synthesizer.speak(utterance)
        
        try? AVAudioSession.sharedInstance().setCategory(.playback, options: .allowBluetooth)
    }
    
    internal func stop() {
        print("TTS 음성 재생 중지")
        synthesizer.stopSpeaking(at: .immediate)
    }
}

 

 

무음모드 상태면 소리가 안들립니다! (무음모드 상태 일때도 들리게 하고 싶다면 매니페스트에 코드를 추가해 줘야 한다고합니다.)

'프로그래밍 > IOS (Swift)' 카테고리의 다른 글

IOS 생명주기  (2) 2024.03.27
[iOS/Swift] App Store Reject 사유 정리  (0) 2023.03.30
애플 개발자 계정 만들기  (0) 2023.03.17
[iOS/Swift] 앱 종료 시키기  (0) 2023.01.25
[iOS/Swift] KeyChain 이용하기  (0) 2023.01.20
Comments