OSSSpeechKit
OSSSpeechKit 开发旨在为应用提供更简单的无障碍选项。
苹果公司没有提供获取正确语音的简单方法,也没提供简单的选择语言或使用语音到文本的方式。OSSSpeechKit 让您轻松找到正确的语言,不再繁琐。
需求
- Swift 5.0 或更高版本
- iOS 13.0 或更高版本
- Cocoapods
支持的语种
下表显示了最初支持的 37 种语言。自 v0.3.3 版本起,又增加了 10 种语言。
英语 - 澳大利亚 | 希伯来语 | 日语 | 罗马尼亚语 | 瑞典语 | 挪威语 |
葡萄牙语 - 巴西 | 印地语 - 印度 | 韩语 | 俄语 | 中文 - 台湾 | 荷兰语 - 比利时 |
法语 - 加拿大 | 匈牙利语 | 西班牙语 - 墨西哥 | 阿拉伯语 - 沙特阿拉伯 | 泰语 | 法语 |
中文 | 印度尼西亚语 | 挪威语 | 斯洛伐克语 | 土耳其语 | 芬兰语 |
中文 - 香港 | 英语 - 爱尔兰语 | 波兰语 | 英语 - 南非语 | 英语 - 美国英语 | 丹麦语 |
捷克语 | 意大利语 | 葡萄牙语 | 西班牙语 | 英语 | 荷兰语 |
希腊语 |
特色功能
OSSSpeechKit提供了47种不同语言的简单文本到语音和语音到文本功能。
OSSSpeechKit基于AVFoundation和Speech框架构建。
您只用两行代码就能实现文本到语音或语音到文本。
语音播放时会覆盖其他声音,如音乐。
安装
OSSSpeechKit可通过CocoaPods获取。要安装,只需在Podfile中添加以下行
pod 'OSSSpeechKit'
实现
文本到语音
这些方法允许您传递一个字符串并听到文本以语音播放。
简单
import OSSSpeechKit
.....
// Declare an instance of OSSSpeechKit
let speechKit = OSSSpeech.shared
// Set the voice you wish to use - currently upper case for formality or language and country name
speechKit.voice = OSSVoice(quality: .enhanced, language: .Australian)
// Set the text in the language you have set
speechKit.speakText(text: "Hello, my name is OSSSpeechKit.")
高级
import OSSSpeechKit
.....
// Declare an instance of OSSSpeechKit
let speechKit = OSSSpeech.shared
// Create a voice instance
let newVoice = OSSVoice()
// Set the language
newVoice.language = OSSVoiceEnum.Australian.rawValue
// Set the voice quality
newVoice.quality = .enhanced
// Set the voice of the speech kit
speechKit.voice = newVoice
// Initialise an utterance
let utterance = OSSUtterance(string: "Testing")
// Set the recognition task type
speechKit.recognitionTaskType = .dictation
// Set volume
utterance.volume = 0.5
// Set rate of speech
utterance.rate = 0.5
// Set the pitch
utterance.pitchMultiplier = 1.2
// Set speech utterance
speechKit.utterance = utterance
// Ask to speak
speechKit.speakText(text: utterance.speechString)
语音转文字
目前语音转文字以非常简单的格式提供。开始和停止录音由应用处理。
🎉
iOS 13 自设备语音转文字支持已在 0.3.0 版本中提供SpeechKit 实现了委托来处理录音授权、文本输出和录音失败。
speechKit.delegate = self
// Call to start and end recording.
speechKit.recordVoice()
// Call to end recording
speechKit.endVoiceRecording()
请确保在您的 info.plist
文件中包含以下内容
隐私 - 语音识别使用描述
隐私 - 麦克风使用描述
没有这些,您将无法访问麦克风或语音识别。
委托
处理返回给用户的认证状态 - 主要用于非授权状态。
func authorizationToMicrophone(withAuthentication type: OSSSpeechKitAuthorizationStatus)
当麦克风完成音频接受后,此委托将带有最终的最佳文本输出被调用。
func didFailToCommenceSpeechRecording()
如果语音识别器和请求无法设置,此方法将被调用。
func didFinishListening(withText text: String)
有关更多信息,您可以直接查看 Apple 文档。
其他功能
列出所有可用的音色
let allLanguages = OSSVoiceEnum.allCases
获取特定音色信息
// All support languages
let allVoices = OSSVoiceEnum.allCases
// Language details
let languageInformation = allVoices[0].getDetails()
// Flag of country
let flag = allVoices[0].flag
getDetails()
方法返回一个包含以下内容的struct:
OSSVoiceInfo {
/// The name of the voice; All AVSpeechSynthesisVoice instances have a persons name.
var name: String?
/// The name of the language being used.
var language: String?
/// The language code is what is internationally used in Locale settings.
var languageCode: String?
/// Identifier is a unique bundle url provided by Apple for each AVSpeechSynthesisVoice.
var identifier: Any?
}
其他信息
OSSVoiceEnum
包含其他方法,如问候消息、标题变量和副标题变量,因此您可以在列表中使用它。
您也可以设置说话的
- 音量
- 音调乘数
- 语速
以及使用一个NSAttributedString
。
计划实现每个国家的标志及一些更多功能,如设备处于静音时能播放声音。
如果您需要的语言或音色不可用,这可能是因为
- 苹果公司没有通过其AVFoundation提供该音色;
- 或者SDK尚未更新以包括新添加的音色。
重要信息
苹果公司不向用户开放Siri语音的使用。
此套件提供了苹果AVFoundation的声音,供用户方便地使用,因此您不需要知道所有声音代码,以及其他很多东西。
为了正确地说每种语言,您需要将语音设置为正确的语言并提供该语言文本;此SDK不是翻译器。
代码示例
如果您希望您的应用使用中文语音,则需要确保传入的文本是中文。
声明:我不懂汉语,已使用Google翻译获取中文字符。
正确
speechKit.voice = OSSVoice(quality: .enhanced, language: .Chinese)
speechKit.speakText(text: "你好我的名字是 ...")
错误
speechKit.voice = OSSVoice(quality: .enhanced, language: .Australian)
speechKit.speakText(text: "你好我的名字是 ...")
或者
speechKit.voice = OSSVoice(quality: .enhanced, language: .Chinese)
speechKit.speakText(text: "Hello, my name is ...")
这个同样的原则适用于所有其他语言,如德语、沙特阿拉伯语、法语等。未能设置要被发音的文本的语言将无法正确发音。
贡献和问题
如果您有任何问题,请创建一个工单或直接给我发电子邮件。
如果您想做出贡献,请创建一个请求合并。
示例项目
要运行示例项目,首先克隆存储库,然后从“示例”目录运行 pod install
。
单元测试
更多示例请参阅单元测试类。
作者
应用开发者
许可协议
OSSSpeechKit遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。