TextAndVoice
Swift语音和文本的转换
相关博客
- 文本转语音是iOS7以后的技术, 用到的是AVFoundation框架
- 语音转文本是iOS10以后, 苹果发布的一个
Speech
框架 - 下面先介绍一下简单的文本转语音
- GitHub上Demo地址
- 项目包括
- 文本转语音
- 实时语音转文本
- 本地语音转文本
- 录音保存本地,转文本
一. 文本转语音
- 文本转语音技术, 简称TTS (是
Text To Speech
的缩写), 语音合成苹果官方文档 - 是苹果iOS7以后新增的功能, 使用AVFoundation 库
- 下面介绍一下需要用到的类
1. AVSpeechSynthesizer
: 语音合成器
1-1. 属性
//是否正在语音播放
open var isSpeaking: Bool { get }
//是否停止语音播放
open var isPaused: Bool { get }
1-2. 方法
//播放语音
open func speak(_ utterance: AVSpeechUtterance)
//停止语音播放
open func stopSpeaking(at boundary: AVSpeechBoundary) -> Bool
//暂停语音播放
open func pauseSpeaking(at boundary: AVSpeechBoundary) -> Bool
//继续语音播放
open func continueSpeaking() -> Bool
//(iOS10以上, 输出通道)
open var outputChannels: [AVAudioSessionChannelDescription]?
2. AVSpeechBoundary
- 描述语音可能被暂停或停止的枚举值
case immediate
//表示发言应该暂停或立即停止。
case word
//说完整个词语之后再暂停或者停止
3. AVSpeechUtterance
- 可以将文本和成一段语音的类, 或者说就是一段要播放的语音
3-1. 属性
//使用的声音
open var voice: AVSpeechSynthesisVoice?
//文本属性
open var speechString: String { get }
//富文本属性
@available(iOS 10.0, *)
open var attributedSpeechString: NSAttributedString { get }
//说话的速度
open var rate: Float
//提供了两个语速 AVSpeechUtteranceMinimumSpeechRate和 AVSpeechUtteranceMaximumSpeechRate和AVSpeechUtteranceDefaultSpeechRate
//说话的基线音高, [0.5 - 2] Default = 1
open var pitchMultiplier: Float
//说话音量, [0-1] Default = 1
open var volume: Float
//开始一段语音之前等待的时间
open var preUtteranceDelay: TimeInterval
//语音合成器在当前语音结束之后处理下一个排队的语音之前需要等待的时间, 默认0.0
open var postUtteranceDelay: TimeInterval
3-2. 初始化方法
public init(string: String)
@available(iOS 10.0, *)
public init(attributedString string: NSAttributedString)
4. AVSpeechSynthesisVoice
- 用于语音合成的独特声音, 主要是不同的语言和地区
- 所支持的所有语言种类详见最底部附录
4-1. 相关属性
//获得当前的语言
open var language: String { get }
//返回用户当前语言环境的代码
@available(iOS 9.0, *)
open var