Обрабатывать текст, как только голосовой ввод остановлен из SFSpeechRecognizer - PullRequest
0 голосов
/ 16 октября 2018

Я занимаюсь разработкой приложения для преобразования голоса в текст с использованием iOS SFSpeechRecognizer API.

Нашел здесь замечательное учебное пособие : , и оно работало нормально.

Я хотел обработатьтекст и выполните некоторые действия, как только голосовой ввод остановлен.Итак, было любопытно, есть ли метод делегата, доступный для SFSpeechRecognizer, который может распознать, когда голосовой ввод остановлен, чтобы я мог захватить ввод и обработать дальше?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Итак, было любопытно, есть ли метод делегата, доступный для SFSpeechRecognizer, который может распознавать, когда голосовой ввод остановлен, чтобы я мог захватить ввод и обработать дальше?

Не построенов API SFSpeechRecognizer, нет.Напротив, именно поэтому вы должны предоставить интерфейс, позволяющий пользователю сообщить распознавателю, что ввод завершен (например, кнопка Готово какого-то рода).Ваше приложение будет отклонено, если вы пропустите этот интерфейс.

0 голосов
/ 16 октября 2018

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

Затем вы можете использовать записанный звук, как в этой ссылке , чтобы преобразовать его в текст за раз.

func transcribeAudio(url: URL) {
    // create a new recognizer and point it at our audio
    let recognizer = SFSpeechRecognizer()
    let request = SFSpeechURLRecognitionRequest(url: url)

    // start recognition!
    recognizer?.recognitionTask(with: request) { [unowned self] (result, error) in
        // abort if we didn't get any transcription back
        guard let result = result else {
            print("There was an error: \(error!)")
            return
        }

        // if we got the final transcription back, print it
        if result.isFinal {
            // pull out the best transcription...
            print(result.bestTranscription.formattedString)
        }
    }
}
...