Перевод речи Azure в текст на нескольких языках

Я новичок в SDK речи Azure, поэтому вполне возможно, что мне не хватает чего-то очевидного, поэтому извиняюсь, если это так.

Я работал над проектом, в котором я хочу перевести аудиофайл / поток с одного языка на другой. Он работает прилично, когда весь разговор ведется на одном языке (все на испанском), но он разваливается, когда я кормлю его настоящими разговорами, где есть английский и испанский. Он пытается распознать английские слова КАК испанские слова (так что он будет транскрибировать что-то вроде «извините» как искаженный испанский).

Насколько я могу судить, вы можете установить несколько целевых языков (язык для перевода), но только один SpeechRecognitionLanguage. Похоже, это означает, что он не может обрабатывать разговоры на нескольких языках (например, телефонный звонок с переводчиком) или если говорящие переключаются между языками. Есть ли способ заставить его работать с несколькими языками, или это просто то, к чему Microsoft еще не дошла?

Вот код, который у меня есть прямо сейчас (это просто слегка измененная версия примера на их github):

// pull in the required packages.
var sdk = require("microsoft-cognitiveservices-speech-sdk");

(function() {
"use strict";

    module.exports = {
    main: function(settings, audioStream) {

        // now create the audio-config pointing to our stream and
        // the speech config specifying the language.
        var audioConfig = sdk.AudioConfig.fromStreamInput(audioStream);
        var translationConfig = sdk.SpeechTranslationConfig.fromSubscription(settings.subscriptionKey, settings.serviceRegion);

        // setting the recognition language.
        translationConfig.speechRecognitionLanguage = settings.language;

        // target language (to be translated to).
        translationConfig.addTargetLanguage("en");

        // create the translation recognizer.
        var recognizer = new sdk.TranslationRecognizer(translationConfig, audioConfig);

        recognizer.recognized = function (s, e) {
            if (e.result.reason === sdk.ResultReason.NoMatch) {
                var noMatchDetail = sdk.NoMatchDetails.fromResult(e.result);
                console.log("\r\nDidn't find a match: " + sdk.NoMatchReason[noMatchDetail.reason]);
            } else {
                var str = "\r\nNext Line: " + e.result.text + "\nTranslations:";

                var language = "en";
                str += " [" + language + "] " + e.result.translations.get(language);
                str += "\r\n";

                console.log(str);
            }
        };

        //two possible states, Error or EndOfStream
        recognizer.canceled = function (s, e) {
            var str = "(cancel) Reason: " + sdk.CancellationReason[e.reason];
            //if it was because of an error
            if (e.reason === sdk.CancellationReason.Error) {
                str += ": " + e.errorDetails;
                console.log(str);
            }
            //We've reached the end of the file, stop the recognizer
            else {
                recognizer.stopContinuousRecognitionAsync(function() {
                console.log("End of file.");

                recognizer.close();
                recognizer = undefined;
                },
                function(err) {
                console.trace("err - " + err);
                recognizer.close();
                recognizer = undefined;
                })
            }
        };


        // start the recognizer and wait for a result.
        recognizer.startContinuousRecognitionAsync(
            function () {
                console.log("Starting speech recognition");
            },
            function (err) {
                console.trace("err - " + err);

                recognizer.close();
                recognizer = undefined;
            }
        );
    }

    }
}());

person user1777900    schedule 15.08.2019    source источник


Ответы (2)


На данный момент (август) перевод Speech SDK поддерживает перевод с одного языка ввода на несколько языков вывода.

В разработке находятся сервисы, поддерживающие распознавание разговорного языка. Это позволит нам выполнить перевод с нескольких языков ввода на несколько языков вывода (оба набора языков вы должны указать в конфигурации). Пока нет ETA для доступности ...

Вольфганг

person wolfma    schedule 21.08.2019

Согласно разделу Speech translation < / a> официального документа Language and region support for the Speech Services, как показано ниже, я думаю, вы можете использовать Speech translation вместо Speech-To-text, чтобы реализовать свои потребности.

Речевой перевод

API перевода речи поддерживает разные языки для преобразования речи в речь и речи в текст. Исходный язык всегда должен быть из таблицы языков преобразования речи в текст. Доступные целевые языки зависят от того, является ли целью перевода речь или текст. Вы можете переводить входящую речь на более чем 60 языков. Подмножество этих языков доступно для синтез речи.

введите здесь описание изображения

Между тем, есть официальный образец кода _ 5_ для Speech translation.

Я не говорю по-испански, поэтому не могу помочь вам протестировать аудио на английском и испанском языках.

Надеюсь, это поможет.

person Peter Pan    schedule 19.08.2019
comment
К сожалению, речевой перевод (который является частью речевого SDK в целом) - это уже то, что я использую (мой код - это всего лишь слегка измененная версия их кода) - person user1777900; 19.08.2019