我刚刚注意到 SFTranscriptionSegments 的时间戳每分钟从零开始,如果有长时间的停顿,就不可能真正知道文本的位置。这是可以配置或解决的吗?
我正在使用 SFSpeechRecognizer 转录可能超过一分钟的音频文件。将它们切成一分钟的片段会有分裂单词的危险。
我在 Mac OS Catalina 上使用 SFSpeechRecognizer。
我刚刚注意到 SFTranscriptionSegments 的时间戳每分钟从零开始,如果有长时间的停顿,就不可能真正知道文本的位置。这是可以配置或解决的吗?
我正在使用 SFSpeechRecognizer 转录可能超过一分钟的音频文件。将它们切成一分钟的片段会有分裂单词的危险。
我在 Mac OS Catalina 上使用 SFSpeechRecognizer。
您没有isFinal
检查. SFSpeechRecognitionResult
从文档中:
一个布尔值,指示语音识别是否完成以及转录是否是最终的。
在转录完成之前,相同的片段可以再次到达,时间戳回到 0。如果您检查结果,您会看到有很多重复的片段。
您需要修改处理程序:
[speechRecognizer recognitionTaskWithRequest: urlRequest resultHandler: ^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error){
if (result.final && !error)
{
NSString *transcriptText = result.bestTranscription.formattedString;
NSLog(@"Transcript: %@", transcriptText);
}
if (error) { /* ... */ }
}];