【问题标题】:Does Speech Framework recognize only English?Speech Framework 是否只识别英语?
【发布时间】:2018-01-06 13:25:36
【问题描述】:

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

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

感谢您的帮助!

【问题讨论】:

  • 显示一些你已经完成的代码,只有这样我们才能提供帮助
  • 请您解释一下您的实际问题。所以我们可以得到一个解决方案。
  • 我已经被告知了。我正在使用语音框架进行英语语音识别,我想做其他语言的语音识别。我怎样才能做到这一点 ?是否可以使用语音框架来实现?

标签: ios swift speech-recognition


【解决方案1】:

只要运行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 (固定)]

【讨论】:

    【解决方案2】:

    试试这个:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      var 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)
      }
      

      就是这样 - 对于每个 Speech 框架支持的语言,您都有一组 SupportedLanguage 实例。语言选择非常方便。

      【讨论】:

      • 应该是'var availableLanguages..'
      【解决方案4】:

      Speech Framework 是否只识别英语?

      不,它没有,如Apple Speech Recognition API Session 中所述 (02:55):

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

      另外,改编自Speech Framework Documentation

      语音 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

      【讨论】:

      • 刚刚过了大约一个小时试图弄清楚它是如何工作的。
      【解决方案5】:
      //Usage for Locales
      SFSpeechRecognizer(locale: Locale.init(identifier: "vi"))
      
      //list to get all supported Locales
      SFSpeechRecognizer.supportedLocales()
      

      【讨论】:

        猜你喜欢
        • 2016-10-31
        • 2019-08-15
        • 1970-01-01
        • 1970-01-01
        • 2018-05-04
        • 2015-06-04
        • 1970-01-01
        • 2015-04-05
        • 1970-01-01
        相关资源
        最近更新 更多