Fur*_*göz 5 speech-recognition ios swift
我目前正在从事有关语音识别并使用WebAPI转换为另一种语言的项目。英语到任何语言都可以,但我想用其他语言来识别。
不言语框架只能识别英语吗?我可以将此框架用于其他语言吗?
谢谢你的帮助!
只要运行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 (fixed), en-CA (fixed), nl-NL (fixed), yue-CN (fixed), en-NZ (fixed), en-GB (fixed), ja-JP (fixed), 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(固定)]
尝试这个 :
SFSpeechRecognizer(locale: Locale.init(identifier: "vi"))
Run Code Online (Sandbox Code Playgroud)
这identifier是您想要使用的语言。语言指示符示例:
//English : en
//French : fr
//Japanese : ja
//VietNamese : vi
Run Code Online (Sandbox Code Playgroud)
我花了几个小时寻找一种解决方案,以人类可读的形式获取所有支持的语言,这对我有用。首先,为一种语言创建一个模型:
struct SupportedLanguage {
let code: String?
let name: String?
}
Run Code Online (Sandbox Code Playgroud)
接下来在 中运行“for”循环SFSpeechRecognizer.supportedLocales(),创建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)
}
Run Code Online (Sandbox Code Playgroud)
就是这样 -SupportedLanguage对于每种语音框架支持的语言,您都有一组实例。工作的语言选择整齐。
语音框架只能识别英语吗?
不,不是的,正如Apple语音识别API会话 (02:55)所述:
“ iOS 10支持50多种语言和方言……”
另外,根据语音框架文档改编而成:
语音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
}
}
Run Code Online (Sandbox Code Playgroud)
实现此方法的实际目的是跟踪可用性的变化,如果语音识别可用,available则将其设置为true。
| 归档时间: |
|
| 查看次数: |
3212 次 |
| 最近记录: |