<!--
{
  "availability" : [
    "iOS: 7.0.0 -",
    "iPadOS: 7.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.14.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVFAudio",
  "identifier" : "/documentation/AVFAudio/AVSpeechSynthesizer",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AVFAudio"
    ],
    "preciseIdentifier" : "c:objc(cs)AVSpeechSynthesizer"
  },
  "title" : "AVSpeechSynthesizer"
}
-->

# AVSpeechSynthesizer

An object that produces synthesized speech from text utterances and enables monitoring or controlling of ongoing speech.

```
class AVSpeechSynthesizer
```

## Overview

To speak some text, create an [`AVSpeechUtterance`](/documentation/AVFAudio/AVSpeechUtterance) instance that contains the text and pass it to [`speak(_:)`](/documentation/AVFAudio/AVSpeechSynthesizer/speak(_:)) on a speech synthesizer instance. You can optionally also retrieve an [`AVSpeechSynthesisVoice`](/documentation/AVFAudio/AVSpeechSynthesisVoice) and set it on the utterance’s [`voice`](/documentation/AVFAudio/AVSpeechUtterance/voice) property to have the speech synthesizer use that voice when speaking the utterance’s text.

The speech synthesizer maintains a queue of utterances that it speaks. If the synthesizer isn’t speaking, calling [`speak(_:)`](/documentation/AVFAudio/AVSpeechSynthesizer/speak(_:)) begins speaking that utterance either immediately or after pausing for its [`preUtteranceDelay`](/documentation/AVFAudio/AVSpeechUtterance/preUtteranceDelay), if necessary. If the synthesizer is speaking, the synthesizer adds utterances to a queue and speaks them in the order it receives them.

After speech begins, you can use the synthesizer object to pause or stop speech. After pausing, you can resume the speech from its paused point or stop the speech entirely and remove all remaining utterances in the queue.

You can monitor the speech synthesizer by examining its [`isSpeaking`](/documentation/AVFAudio/AVSpeechSynthesizer/isSpeaking) and [`isPaused`](/documentation/AVFAudio/AVSpeechSynthesizer/isPaused) properties, or by setting a delegate that conforms to [`AVSpeechSynthesizerDelegate`](/documentation/AVFAudio/AVSpeechSynthesizerDelegate). The delegate receives significant events as they occur during speech synthesis.

An `AVSpeechSynthesizer` also controls the route where the speech plays. For more information, see Directing speech output.

> Note:
> The system doesn’t automatically retain the speech synthesizer, so you need to manually retain it until speech concludes.

## Topics

### Controlling speech

[`speak(_:)`](/documentation/AVFAudio/AVSpeechSynthesizer/speak(_:))

Adds the utterance you specify to the speech synthesizer’s queue.

[`continueSpeaking()`](/documentation/AVFAudio/AVSpeechSynthesizer/continueSpeaking())

Resumes speech from its paused point.

[`pauseSpeaking(at:)`](/documentation/AVFAudio/AVSpeechSynthesizer/pauseSpeaking(at:))

Pauses speech at the boundary you specify.

[`stopSpeaking(at:)`](/documentation/AVFAudio/AVSpeechSynthesizer/stopSpeaking(at:))

Stops speech at the boundary you specify.

[`AVSpeechBoundary`](/documentation/AVFAudio/AVSpeechBoundary)

Specifies when to pause or stop speech.

### Inspecting a speech synthesizer

[`isSpeaking`](/documentation/AVFAudio/AVSpeechSynthesizer/isSpeaking)

A Boolean value that indicates whether the speech synthesizer is speaking or is in a paused state and has utterances to speak.

[`isPaused`](/documentation/AVFAudio/AVSpeechSynthesizer/isPaused)

A Boolean value that indicates whether a speech synthesizer is in a paused state.

### Managing the delegate

[`delegate`](/documentation/AVFAudio/AVSpeechSynthesizer/delegate)

The delegate object for the speech synthesizer.

[`AVSpeechSynthesizerDelegate`](/documentation/AVFAudio/AVSpeechSynthesizerDelegate)

A delegate protocol that contains optional methods you can implement to respond to events that occur during speech synthesis.

### Directing speech output

[`usesApplicationAudioSession`](/documentation/AVFAudio/AVSpeechSynthesizer/usesApplicationAudioSession)

A Boolean value that specifies whether the app manages the audio session.

[`mixToTelephonyUplink`](/documentation/AVFAudio/AVSpeechSynthesizer/mixToTelephonyUplink)

A Boolean value that specifies whether to send synthesized speech to an active call.

[`outputChannels`](/documentation/AVFAudio/AVSpeechSynthesizer/outputChannels)

An array of audio session channels to route generated speech.

[`write(_:toBufferCallback:)`](/documentation/AVFAudio/AVSpeechSynthesizer/write(_:toBufferCallback:))

Generates speech for the utterance and invokes the callback with the audio buffer.

[`AVSpeechSynthesizer.BufferCallback`](/documentation/AVFAudio/AVSpeechSynthesizer/BufferCallback)

A type that defines a callback that receives a buffer of generated speech.

[`write(_:toBufferCallback:toMarkerCallback:)`](/documentation/AVFAudio/AVSpeechSynthesizer/write(_:toBufferCallback:toMarkerCallback:))

Generates audio buffers and associated metadata for storage or further speech synthesis processing.

[`AVSpeechSynthesizer.MarkerCallback`](/documentation/AVFAudio/AVSpeechSynthesizer/MarkerCallback)

A type that defines a callback that receives speech markers.

### Enabling personal voices

[`personalVoiceAuthorizationStatus`](/documentation/AVFAudio/AVSpeechSynthesizer/personalVoiceAuthorizationStatus-swift.type.property)

Your app’s authorization to use personal voices.

[`availableVoicesDidChangeNotification`](/documentation/AVFAudio/AVSpeechSynthesizer/availableVoicesDidChangeNotification)

A notification that indicates a change in available voices for speech synthesis.

[`requestPersonalVoiceAuthorization(completionHandler:)`](/documentation/AVFAudio/AVSpeechSynthesizer/requestPersonalVoiceAuthorization(completionHandler:))

Prompts the user to authorize your app to use personal voices.

[`AVSpeechSynthesizer.PersonalVoiceAuthorizationStatus`](/documentation/AVFAudio/AVSpeechSynthesizer/PersonalVoiceAuthorizationStatus-swift.enum)

An enumeration that models the personal voices authorization status.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)