iOS 10 语音套件 : Need help obtaining timestamp of each word during partial results

标签 ios objective-c swift speech-recognition

现在我需要语音转文本转录中每个单词的时间戳,即单词开始的时间以及持续时间。

但是,当记录每个转录的结果时,只有在转录完全完成后才会记录时间戳和持续时间。

示例代码(来自 Apple):

// Configure request so that results are returned before audio recording is finished
recognitionRequest.shouldReportPartialResults = true

// A recognition task represents a speech recognition session.
// We keep a reference to the task so that it can be cancelled.
recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest) { result, error in
    var isFinal = false

    if let result = result {
        self.textView.text = result.bestTranscription.formattedString
        isFinal = result.isFinal

        for word in result.bestTranscription.segments {
            print("\(word.substring)\(word.timestamp)")
        }
    }

    if error != nil || isFinal {
        self.audioEngine.stop()
        inputNode.removeTap(onBus: 0)

        self.recognitionRequest = nil
        self.recognitionTask = nil

        self.recordButton.isEnabled = true
        self.recordButton.setTitle("Start Recording", for: [])
    }
}

有人知道如何实时获取单词的时间戳吗?他们基本上每次都返回 0,直到它完成。我从这里获取示例代码:

https://developer.apple.com/library/prerelease/content/samplecode/SpeakToMe/Introduction/Intro.html

最佳答案

时间戳的计算是一项计算量大的操作,通常不在解码时实现,仅作为结果的后处理。因此在许多引擎中,不可能获得部分时间戳。

如果您仍然需要时间戳,则需要考虑使用不同的库,可能还需要考虑不同的算法。

关于iOS 10 语音套件 : Need help obtaining timestamp of each word during partial results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710049/

相关文章:

ios - 如何确定 iOS 上的用户带宽

iphone - iOS获取视频帧率

ios - 以编程方式在 Xcode Playgrounds 中创建 UIView 子类

Swift 游戏 - 点击并点击 + 按住手势?

iphone - 在不打开 MailComposer 或新 View 的情况下通过代码发送邮件

ios - SK3DNode不旋转

ios - 暂停广告刷新 admob ios

ios - 禁用背景触摸 SpriteKit iOS

swift - 如何将 NSWorkspace 通知迁移到 Swift 4?

ios - Xcode 在 BuildPhases 中尝试运行脚本时抛出 "No such file or directory"错误