---
# System prepended metadata

title: AVSpeechSynthesizer
tags: [Audio, SwiftUI, Siri]

---

###### tags: `Audio` `SwiftUI` `Siri`
# AVSpeechSynthesizer

:::danger
In iOS 17, AVSpeechSynthesizer cannot work properly. Check out the problem [here](https://developer.apple.com/forums/thread/737685)
:::

In <font color="red">`AVFoundation`</font>, there is a class named<font color="red">`AVSpeechSynthesizer`</font>. With <font color="red">`AVSpeechSynthesizer`</font> you can customize the texts that you want your app to speak.

### AVSpeechSynthesizer Declaration

```swift
class AVSpeechSynthesizer : NSObject
```

To configure the way your app speak, like voice, language, contents and so on, we use <font color="red">`AVSpeechUtterance`</font>.

### AVSpeechUtterance Declaration

```swift
class AVSpeechUtterance : NSObject
```

### Controlling Speech

```swift
func speak(_ utterance: AVSpeechUtterance)

func continueSpeaking() -> Bool

func pauseSpeaking(at boundary: AVSpeechBoundary) -> Bool

func stopSpeaking(at boundary: AVSpeechBoundary) -> Bool
```

You can notice that above the code we have a enum called <font color="red">`AVSpeechBoundary`</font>. <font color="red">`AVSpeechBoundary`</font> help us specifies when to pauce or stop speech. It contains two constants <font color="red">`immediate`</font> and <font color="red">`word`</font>

- immediate ⇒ Indicates to pause or stop speech immediately.
- word ⇒ Indicates to pause or stop speech after the synthesizer finishes speaking the current word.

### AVSpeechBoundary Declaration

```swift
enum AVSpeechBoundary : Int, @unchecked Sendable
```

# Reference

- [AVFoundation](https://developer.apple.com/documentation/avfoundation/)
- [AVSpeechSynthesizer](https://developer.apple.com/documentation/avfaudio/avspeechsynthesizer#declaration)
- [AVSpeechUtterance](https://developer.apple.com/documentation/avfaudio/avspeechutterance)