1

我正在使用 Swift 开发一个 iOS 应用程序,它试图转录对话。我成功地使用AVAudioEngine() 和 SFSpeechRecognizer()转录对话。

    // MARK: Speech Helper Methods
func recordAndRecognizeSpeech() {
    guard let node = audioEngine.inputNode else { return }
    let recordingFormat = node.outputFormat(forBus: 0)
    node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { buffer, _ in
        self.request.append(buffer)
    }

    audioEngine.prepare()
    do {
        try audioEngine.start()
    } catch {
        return print(error)
    }

    guard let myRecognizer = SFSpeechRecognizer() else {
        return
    }
    if !myRecognizer.isAvailable {
        return
    }

    recognitionTask = speechRecognizer?.recognitionTask(with: request, resultHandler: { result, error in
        if let result = result {
            let bestString = result.bestTranscription.formattedString
        } else if let error = error {
            print(error)
        }
    })
}

现在我想尝试把它带到视频聊天中。因此,我按照在 github 上找到的 Twilio 快速入门进行了适当的设置(我使用了 CallKit 版本,这并不重要)。但是,我在 Twilio 视频通话期间可用的音轨不是 AVAudioEngine 音轨,而是 TVILocalAudioTrack。这是 Twilio SDK 的特定类型。

TVILocalAudioTrack的文档在这里,但我不知道如何将其插入 SFSpeechRecognizer。

可能的替代方案

当有人在 Twilio 房间时启动 AVAudioEngine() (我认为我不能按照 Twilio 的 SDK) - 如果有人对此有建议,那就太好了。

也许 Swift 对这个项目来说还不够好?哎呀!

4

1 回答 1

1

目前 Twilio v1.0 beta 14 无法做到这一点。它需要访问音频缓冲区,而 Twilio 的 API 无法访问该缓冲区。

有关更多详细信息,请参阅此 Github 问题

于 2017-04-27T00:20:39.260 回答