SFSpeechRecognizer 多语言

5
我正在构建一个支持语音识别并将语音转换为文本的搜索功能,因此我正在使用SFSpeechRecognizer。但问题是,我需要同时支持多种语言,例如 ("en_US", "fr", vi, ar)。

主要思想是用户可以用英语说一个单词,用法语说另一个单词,我希望引擎能够检测出这一点。

目前,我正在使用以下方式设置我的主要语言:

英语:

private let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en_US"))!

FRENCH:

 private let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "fr"))!

每种语言都需要单独设置。

SFSpeechRecognizer 是否支持同时识别多种语言的方式?


我也在尝试实现同样的功能,但是还没有成功。你有什么解决方案吗?请告诉我。 - iCrazyDev
您需要自己创建一个核心ML模型,以便进行语音转文字,并支持多种语言检测。 - Chaudhary Ankit Deshwal
1个回答

0

虽然这是一个老问题,但还没有答案...

你不能在同一个SFSpeechRecognizer中使用多个语言环境,但你可以同时管理多个SFSpeechRecognizer,像这样:

let italian = SFSpeechRecognizer(locale: Locale(identifier: "it-IT"))
let english = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))

设置所有的委托:

为它们都设置委托:

italian.delegate = self
english.delegate = self

创建所需的双重、三重或多重逻辑,例如:
self.recognitionTaskOne = italian?.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
     // Your code
})
self.recognitionTaskTwo = english?.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
     // Your code
})

等等……

针对您的具体请求:

主要想法是用户可以说出一个英文单词,再说出另一个法语单词,我希望引擎能够检测到这一点。

恐怕您需要处理所有输出并进行比较。不过,我注意到如果我设置了一个区域设置(例如意大利语),然后用户说英语,系统也会得到一些英语。这仅适用于英语……我不确定,但我认为无论您设置什么区域设置,英语始终是默认理解的。


嗨@Giuseppe Garassino,我已经尝试了,但是对于我的一个请求,我得到了SpeechApp[4764:92774] [Utility] + [AFAggregator logDictationFailedWithError:]错误域=kAFAssistantErrorDomain Code=203“重试”UserInfo={NSLocalizedDescription=Retry, NSUnderlyingError=0x600001c71470 {Error Domain=SiriSpeechErrorDomain Code=1“(null)”}}。 - Beena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接