OSSSpeechKit 0.3.3

OSSSpeechKit 0.3.3

Sean Smith 维护。



  • appdevguy

OSSSpeechKit

OSSSpeechKit Logo

Build Status Version License Platform codecov docs

OSSSpeechKit 开发旨在为应用提供更简单的无障碍选项。

苹果公司没有提供获取正确语音的简单方法,也没提供简单的选择语言或使用语音到文本的方式。OSSSpeechKit 让您轻松找到正确的语言,不再繁琐。

需求

  • Swift 5.0 或更高版本
  • iOS 13.0 或更高版本
  • Cocoapods

支持的语种

下表显示了最初支持的 37 种语言。自 v0.3.3 版本起,又增加了 10 种语言。

英语 - 澳大利亚
🇦🇺
希伯来语
🇮🇱
日语
🇯🇵
罗马尼亚语
🇷🇴
瑞典语
🇸🇪
挪威语
🇳🇴
葡萄牙语 - 巴西
🇧🇷
印地语 - 印度
🇮🇳
韩语
🇰🇷
俄语
🇷🇺
中文 - 台湾
🇹🇼
荷兰语 - 比利时
🇧🇪
法语 - 加拿大
🇨🇦
匈牙利语
🇭🇺
西班牙语 - 墨西哥
🇲🇽
阿拉伯语 - 沙特阿拉伯
🇸🇦
泰语
🇹🇭
法语
🇫🇷
中文
🇨🇳
印度尼西亚语
🇮🇩
挪威语
🇳🇴
斯洛伐克语
🇸🇰
土耳其语
🇹🇷
芬兰语
🇫🇮
中文 - 香港
🇭🇰
英语 - 爱尔兰语
🇮🇪
波兰语
🇵🇱
英语 - 南非语
🇿🇦
英语 - 美国英语
🇺🇸
丹麦语
🇩🇰
捷克语
🇨🇿
意大利语
🇮🇹
葡萄牙语
🇵🇹
西班牙语
🇪🇸
英语
🇬🇧
荷兰语
🇳🇱
希腊语
🇬🇷

特色功能

OSSSpeechKit提供了47种不同语言的简单文本到语音和语音到文本功能。

OSSSpeechKit基于AVFoundationSpeech框架构建。

您只用两行代码就能实现文本到语音或语音到文本。

语音播放时会覆盖其他声音,如音乐。

安装

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

单元测试

更多示例请参阅单元测试类。

作者

应用开发者

profile for App Dev Guy at Stack Overflow, Q&A for professional and enthusiast programmers

许可协议

OSSSpeechKit遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。