2020 Accessibility & Inclusion
WWDC20 · 9 min · Accessibility & Inclusion
Create a seamless speech experience in your apps
Augment your app’s accessibility experience with speech synthesis: Discover the best times and places to add speech APIs so that everyone who uses your app can benefit. Learn how to use AVSpeechSynthesizer to complement assistive technologies like VoiceOver, and when to implement alternative APIs. And we’ll show you how to route audio to the appropriate source and create apps that integrate speech seamlessly for all who need or want it. To get the most out of this session, you should be familiar with AVFoundation and the basics of speech synthesis. For an overview, watch “AVSpeechSynthesizer: Making iOS Talk.”
Watch at developer.apple.com ↗Code shown on screen · 7 snippets
Post an Announcement to the Running Assistive Technology
UIAccessibility.post(notification: .announcement, argument: "Hello World") Getting Started with AVSpeechSynthesizer
self.synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "Hello World")
self.synthesizer.speak(utterance) Respecting the Currently Running Assistive Technology's Speech Settings
self.synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "Hello World")
utterance.prefersAssistiveTechnologySettings = true
self.synthesizer.speak(utterance) Customizing Speech - Choosing a Voice
let utterance = AVSpeechUtterance(string: "Hello World")
// Choose a voice using a language code
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
// Choose a voice using an identifier
utterance.voice = AVSpeechSynthesisVoice(identifier: AVSpeechSynthesisVoiceIdentifierAlex)
// Get a list of installed voices
let voices = AVSpeechSynthesisVoice.speechVoices() Customizing Speech - Pitch and Rate
let utterance = AVSpeechUtterance(string: "Hello World")
// Choose a rate between 0 and 1, 0.5 is the default rate
utterance.rate = 0.75
// Choose a pitch multiplier between 0.5 and 2, 1 is the default multiplier
utterance.pitchMultiplier = 1.5
// Choose a volume between 0 and 1, 1 is the default value
utterance.volume = 0.5 Mix Speech With an Outgoing Call
self.synthesizer = AVSpeechSynthesizer()
self.synthesizer.mixToTelephonyUplink = true Opting Speech Out of Application's Audio Session
self.synthesizer = AVSpeechSynthesizer()
self.synthesizer.usesApplicationAudioSession = false Resources
Related sessions
-
13 min -
9 min