Речь к тексту SWIFT - PullRequest
       28

Речь к тексту SWIFT

0 голосов
/ 18 ноября 2018

У меня есть следующий код:

func createStringFromAudio () {
    SFSpeechRecognizer.requestAuthorization {_ in
        DispatchQueue.main.async {
            switch SFSpeechRecognizer.authorizationStatus() {
            case .authorized :
                let audioURL = Bundle.main.url(forResource: "ConversionTest", withExtension: "mp3")!
                let recognizer = SFSpeechRecognizer()
                let request = SFSpeechURLRecognitionRequest(url: audioURL)
                recognizer?.recognitionTask(with: request) { result, error in
                    guard error == nil else { print("Error"); return}
                    guard let result = result else {print("No result"); return}
                    print(result.bestTranscription.formattedString)
                }
                break
            default :
                break
            }
        }
    }
}

Вот мой вопрос: 1: Как узнать, когда файл готов? В настоящее время он постоянно обновляет результаты печати, но не уведомляет меня, когда транскрипция завершена на 100%. Как узнать, когда транскрипция завершена, и сохранить строку для разбора?

2: кажется, обрезается до окончания. Есть ли ограничение по времени? Лимит символов?

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете сохранить задание, чтобы проверить его состояние, даже отменить его. На самом деле, процесс транскрибирования не контролируется нами, и когда система думает, что она закончена, она заканчивается.

Если вам нужны точные элементы управления, используйте делегата:

func recognitionTask(with request: SFSpeechRecognitionRequest, delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognitionTask

Это может предоставить больше информации во время транскрибирования, по крайней мере, оно даст вам знать, когда оно закончится.

...