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

Сегодня почти любую задачу можно автоматизировать с помощью голосовых команд и распознавания речи, начиная от включения света и заканчивая планированием времени в салоне красоты. Эти задачи могут выполнять уже доступные на рынке персональные помощники, такие как Siri — Apple, Cortana — Microsoft, Alexia — Amazon и Google Assistant.

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

В этом посте я расскажу, как интегрировать собственное распознавание речи и синтез речи в браузер с помощью JavaScript API WebSpeech.

Согласно документации Mozilla:

Web Speech API позволяет встраивать голосовые данные в веб-приложения. Web Speech API состоит из двух частей: SpeechSynthesis (речевой текст) и SpeechRecognition (распознавание речи).

Приложение было построено с использованием Ionic Framework (AngularJS) и плагинов Cordova, используя в качестве макета экрана одно из упражнений изображение ниже:

В основном это работает следующим образом: в первый момент, когда ученик касается утверждения упражнения, которое обычно представляет собой вопрос или значок «Наушники», приложение читает его вслух.

Представьте, как сложно было бы записать все вопросы, а затем сделать их доступными, представьте объем памяти, часы записи, произношение и т. д. Поэтому решением было попросить компьютер сделать это следующим образом: когда учащийся касается вопроса, текст которого передается в качестве аргумента в метод говорить TTS (преобразование текста в речь или преобразование текста в речь). Для этого метода требуется параметр locale, представляющий собой строку, определяющую язык читаемого текста. Параметр скорости указывает, насколько быстро текст будет прочитан устройством.

$scope.listenText = function(textToBeRead){
        
        TTS.speak({
            text: textToBeRead,
            locale: 'en-US',
            rate: 1.00
        }, function () {
            console.log("Finished Ok");
        }, function (reason) {
            console.log("ERRO NA FALA", JSON.stringify( reason ) );
        });
        
    }

Когда учащийся касается «Записать мой голос», создается объект webkitSpeechRecognition и открывается микрофон, чтобы учащийся мог говорить, как только он заканчивает говорить, то, что он сказал, отображается на экране, чтобы он мог сравнить свое произношение с упражнением. отклик.

Если на этом шаге будет ошибка, мы перезапустим TTS, заставив устройство произнести фразу «Извините, не могли бы вы повторить?», это порождает интерактивность между приложением и учеником, буквально разговор. Этот процесс в наушниках становится еще более волшебным! ❤

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

$scope.recordMyVoice = function(){
        var recognition = new SpeechRecognition() || new webkitSpeechRecognition();// To Device
        recognition.lang = 'en-US';
        recognition.start();
recognition.onresult = function(event) {
            $scope.showAnswer = true;
            if (event.results.length > 0) {
                $scope.showAnswer = true;
                $scope.recognizedText = event.results[0][0].transcript;
                $scope.$apply()
            }
        };
recognition.onerror = function(event) {
            TTS.speak({
                text: "Sorry, could you please repeat?",
                locale: 'en-US',
                rate: 1.00
            }
        }
    }

Что касается конфиденциальности, использование микрофона должно быть разрешено пользователем. Поскольку приложение было создано для использования на платформах Android и iOS, необходимо было по-разному относиться к разрешениям.

В отличие от Android, где не требуется дополнительная настройка, iOS требуется передать строку в параметре MICROPHONE_USAGE_DESCRIPTION, сообщающую вам, почему вам нужно разрешение этого пользователя.

Приложение опубликовано в Google Play и App Store и доступно только для учащихся.

Я действительно рекомендую использовать Web Speech API, он прост в использовании и может быть использован в качестве дифференциала конкурентоспособности и доступности.

использованная литература

Кордова Плагин TTS

API веб-речи

Разрешение IOS для микрофона

Ионная структура