0

我刚刚注意到 SFTranscriptionSegments 的时间戳每分钟从零开始,如果有长时间的停顿,就不可能真正知道文本的位置。这是可以配置或解决的吗?

我正在使用 SFSpeechRecognizer 转录可能超过一分钟的音频文件。将它们切成一分钟的片段会有分裂单词的危险。

我在 Mac OS Catalina 上使用 SFSpeechRecognizer。

4

1 回答 1

0

您没有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) { /* ... */ }
        }];
于 2020-02-06T17:30:45.970 回答