Speech Framework是否只识别英语?

时间:2017-07-31 05:20:53

标签: ios swift speech-recognition

我目前正在开展一个关于语音识别的项目,并使用WebAPI翻译成另一种语言。英语到任何语言都已完成,但我想用其他语言进行识别。

Speech Framework只识别英语吗?我可以将此框架用于其他语言吗?

感谢您的帮助!

5 个答案:

答案 0 :(得分:4)

  

Speech Framework是否只识别英语?

不,不,如Apple Speech Recognition API Session中所述  (2点55):

  

“iOS 10支持超过50种语言和方言......”

此外,改编自Speech Framework Documentation

  

Speech API通过与之通信来执行语音识别   Apple的服务器或使用设备上的语音识别器(如果有)。   查明语音识别器是否适用于特定的   语言,您采用 SFSpeechRecognizerDelegate 协议

SFSpeechRecognizerDelegate协议只包含一个可选方法:

speechRecognizer(_:availabilityDidChange:)

  

告知代表语音识别器的可用性   改变。

你可以实现 - 例如:

func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
    if available {
        // you could display is as enabled in the app
    } else {
        // you could display is as disabled in the app
    }
}

实施此方法的实际目的是跟踪可用性更改,如果语音识别可用,则available将设置为true

答案 1 :(得分:3)

试试这个:

SFSpeechRecognizer(locale: Locale.init(identifier: "vi"))

identifier是您要使用的语言。语言指示符示例:

//English : en
//French : fr
//Japanese : ja
//VietNamese : vi

答案 2 :(得分:3)

只需运行print(SFSpeechRecognizer.supportedLocales())即可获得

  

[es-419(固定),th-TH(固定),ca-ES(固定),fr-BE(固定),de-CH   (固定),sk-SK(固定),en-ZA(固定),es-CL(固定),hi-IN(固定),   zh-CN(固定),zh-TW(固定),da-DK(固定),hi-IN-translit(固定),   el-GR(固定),he-IL(固定),pt-BR(固定),en-AE(固定),pt-PT   (固定),fr-CH(固定),ro-RO(固定),vi-VN(固定),en-SA(固定),   pl-PL(固定),es-US(固定),hi-Latn(固定),en-SG(固定),tr-TR   (固定),hr-HR(固定),ko-KR(固定),uk-UA(固定),it-CH(固定),   ar-SA(固定),id-ID(固定),en-IN(固定),es-ES(固定),de-AT   (固定),en-IE(固定),cs-CZ(固定),es-CO(固定),zh-HK(固定),   sv-SE(固定),en-PH(固定),en-ID(固定),en-CA(固定),nl-NL   (固定),yue-CN(固定),en-NZ(固定),en-GB(固定),ja-JP(固定),   it-IT(固定),ru-RU(固定),en-US(固定),ms-MY(固定),es-MX   (固定),hu-HU(固定),fr-CA(固定),wuu-CN(固定),de-DE(固定),   fr-FR(固定),fi-FI(固定),nb-NO(固定),nl-BE(固定),en-AU   (固定)]

答案 3 :(得分:1)

我花了几个小时寻找一种解决方案,以一种人类可读的形式获得所有受支持的语言,这对我很有效。 首先,为语言创建模型:

struct SupportedLanguage {
    let code: String?
    let name: String?
}

接下来在SFSpeechRecognizer.supportedLocales()中运行“ for”循环,创建SupportedLanguage实例并将其添加到数组availableLanguages中:

let availableLanguages: [SupportedLanguage] = []
for locale in SFSpeechRecognizer.supportedLocales() {
    let language = SupportedLanguage (
        code: locale.languageCode,
        name: Locale.init(identifier: "en").localizedString(forIdentifier: locale.identifier)
    )
    availableLanguages.append(language)
}

就是这样-对于每种语音框架支持的语言,您都有SupportedLanguage实例的数组。可以巧妙地选择语言。

答案 4 :(得分:0)

//Usage for Locales
SFSpeechRecognizer(locale: Locale.init(identifier: "vi"))

//list to get all supported Locales
SFSpeechRecognizer.supportedLocales()