Introduction

I was eager to learn how converting Text To Speech works in iOS. Here is what I discovered:

First Step

The first step is to add AVSpeechSynthesizer, an object that produces synthesized speech from text utterances.

@State private var speechSynthesizer = AVSpeechSynthesizer()

Second Step

The second step is to add AVSpeechUtterance, an object that encapsulates the text for speech synthesis.

private var utterance: AVSpeechUtterance {
    let inputMessage = "Hello world!"
    let utterance = AVSpeechUtterance(string: inputMessage)
    utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
    return utterance
}

Optional

You can configure pitch, rate, and voice parameters.

Third Step

The third step is to add a speak method that actually allows you to convert Text To Speech.

speechSynthesizer.speak(utterance)

Complete Example

import SwiftUI
import AVFoundation

struct ContentView: View {

    @State private var speechSynthesizer = AVSpeechSynthesizer()

    private var utterance: AVSpeechUtterance {
        let inputMessage = "Hello world!"
        let utterance = AVSpeechUtterance(string: inputMessage)
        utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
        return utterance
    }

    var body: some View {
        VStack {
            Button("Speak") {
                speechSynthesizer.speak(utterance)
            }
        }
        .padding()
    }

}

#Preview {
    ContentView()
}

Thank you for reading! 😊