Implementar detecção de idioma

A identificação de idioma é usada para identificar os idiomas falados em áudio quando comparado com uma lista de idiomas com suporte.

Os casos de uso da LID (identificação de idioma) incluem:

  • Reconhecimento da Conversão de fala em texto quando você precisa identificar o idioma em uma fonte de áudio e depois transcrevê-lo para texto.
  • Tradução de fala, quando você precisa identificar o idioma em uma fonte de áudio e traduzi-lo para outro idioma.

Para o reconhecimento de fala, a latência inicial é maior com a identificação de idioma. Você só deve incluir esse recurso opcional conforme necessário.

Definir opções de configuração

Se você usa a identificação de idioma com conversão de fala em texto ou com tradução de fala, existem alguns conceitos e opções de configuração comuns.

Em seguida, faça uma solicitação de reconhecimento único ou contínuo para o serviço de Fala.

Importante

As APIs de Identificação de Idioma são simplificadas com o SDK de Fala versão 1.25 e posterior. As propriedades SpeechServiceConnection_SingleLanguageIdPriority e SpeechServiceConnection_ContinuousLanguageIdPriority foram removidas. Uma única propriedade SpeechServiceConnection_LanguageIdMode as substitui. Você não precisa mais priorizar entre baixa latência e alta precisão. Para reconhecimento de fala ou tradução contínua, você só precisa selecionar se deseja executar a Detecção de Idioma no começo ou contínua.

Este artigo fornece snippets de código para descrever os conceitos. Links para exemplos completos para cada caso de uso são fornecidos.

Idiomas candidatos

Você fornece idiomas candidatos com o objeto AutoDetectSourceLanguageConfig. Você espera que pelo menos um dos candidatos esteja no áudio. Inclua até quatro idiomas para a LID inicial ou até dez idiomas para a LID contínua. O serviço de Fala retorna um dos idiomas candidatos fornecidos, mesmo que esses idiomas não estavam no áudio. Por exemplo, se fr-FR (francês) e en-US (inglês) forem fornecidos como candidatos, mas o alemão for falado, o serviço retornará fr-FR ou en-US.

É preciso fornecer a localidade completa com separador de traço (-), mas a identificação de idioma usa apenas uma localidade por idioma base. Não inclua várias localidades para o mesmo idioma, por exemplo, en-US e en-GB.

var autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.FromLanguages(new string[] { "en-US", "de-DE", "zh-CN" });
auto autoDetectSourceLanguageConfig = 
    AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE", "zh-CN" });
auto_detect_source_language_config = \
    speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["en-US", "de-DE", "zh-CN"])
AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.fromLanguages(Arrays.asList("en-US", "de-DE", "zh-CN"));
var autoDetectSourceLanguageConfig = SpeechSDK.AutoDetectSourceLanguageConfig.fromLanguages([("en-US", "de-DE", "zh-CN"]);
NSArray *languages = @[@"en-US", @"de-DE", @"zh-CN"];
SPXAutoDetectSourceLanguageConfiguration* autoDetectSourceLanguageConfig = \
    [[SPXAutoDetectSourceLanguageConfiguration alloc]init:languages];

Saiba mais em idiomas com suporte.

Identificação de idioma inicial e contínua

A Fala dá suporte à LID (identificação de idioma) inicial e contínua.

Observação

A identificação contínua de idioma é compatível apenas com SDKs de Fala em C#, C++, Java (somente para conversão de fala em texto), JavaScript (somente para conversão de fala em texto) e Python.

  • A LID inicial identifica o idioma uma vez nos primeiros segundos de áudio. Use a LID inicial se o idioma no áudio não se alterar. Com a LID inicial, um idioma é detectado e retornado em menos de 5 segundos.
  • A LID contínua pode identificar vários idiomas durante o áudio. Use a LID contínua se o idioma no áudio puder ser alterado. A LID contínua não dá suporte à alteração de idiomas na mesma frase. Por exemplo, se você estiver falando principalmente espanhol e inserir algumas palavras em inglês, ela não detectará a alteração de idioma por palavra.

A LID inicial ou contínua é implementada pela chamada de métodos para reconhecimento único ou contínuo. A LID contínua só tem suporte com reconhecimento contínuo.

Reconhecimento único ou contínuo

A identificação de idioma é concluída com objetos e operações de reconhecimento. Faça uma solicitação ao Serviço Cognitivo do Azure para Fala para reconhecimento de áudio.

Observação

Não confunda reconhecimento com identificação. O reconhecimento pode ser usado com ou sem a identificação de idioma.

Chame o método de “reconhecimento único” ou os métodos de reconhecimento contínuo de início e parada. Escolha entre:

  • Reconhecimento único com a LID inicial A LID contínua não tem suporte para reconhecimento uma vez.
  • Use o reconhecimento contínuo com a LID inicial.
  • Use o reconhecimento contínuo com a LID contínua.

A propriedade SpeechServiceConnection_LanguageIdMode é necessária apenas para a LID contínua. Sem ela, o Serviço Cognitivo do Azure para Fala usa a LID inicial como padrão. Os valores com suporte são AtStart para LID inicial ou Continuous para LID contínua.

// Recognize once with At-start LID. Continuous LID isn't supported for recognize once.
var result = await recognizer.RecognizeOnceAsync();

// Start and stop continuous recognition with At-start LID
await recognizer.StartContinuousRecognitionAsync();
await recognizer.StopContinuousRecognitionAsync();

// Start and stop continuous recognition with Continuous LID
speechConfig.SetProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, "Continuous");
await recognizer.StartContinuousRecognitionAsync();
await recognizer.StopContinuousRecognitionAsync();
// Recognize once with At-start LID. Continuous LID isn't supported for recognize once.
auto result = recognizer->RecognizeOnceAsync().get();

// Start and stop continuous recognition with At-start LID
recognizer->StartContinuousRecognitionAsync().get();
recognizer->StopContinuousRecognitionAsync().get();

// Start and stop continuous recognition with Continuous LID
speechConfig->SetProperty(PropertyId::SpeechServiceConnection_LanguageIdMode, "Continuous");
recognizer->StartContinuousRecognitionAsync().get();
recognizer->StopContinuousRecognitionAsync().get();
// Recognize once with At-start LID. Continuous LID isn't supported for recognize once.
SpeechRecognitionResult  result = recognizer->RecognizeOnceAsync().get();

// Start and stop continuous recognition with At-start LID
recognizer.startContinuousRecognitionAsync().get();
recognizer.stopContinuousRecognitionAsync().get();

// Start and stop continuous recognition with Continuous LID
speechConfig.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, "Continuous");
recognizer.startContinuousRecognitionAsync().get();
recognizer.stopContinuousRecognitionAsync().get();
# Recognize once with At-start LID. Continuous LID isn't supported for recognize once.
result = recognizer.recognize_once()

# Start and stop continuous recognition with At-start LID
recognizer.start_continuous_recognition()
recognizer.stop_continuous_recognition()

# Start and stop continuous recognition with Continuous LID
speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_LanguageIdMode, value='Continuous')
recognizer.start_continuous_recognition()
recognizer.stop_continuous_recognition()

Usar Conversão de fala em texto

Você usa o reconhecimento da conversão de fala em texto quando precisa identificar o idioma em uma fonte de áudio e depois transcrevê-lo para texto. Para obter mais informações, confira Visão geral de Conversão de fala em texto.

Observação

O reconhecimento da conversão de fala em texto com identificação de idioma no início é suportado com SDKs de fala em C#, C++, Python, Java, JavaScript e Objective-C. O reconhecimento da conversão de fala em texto com identificação contínua do idioma só é suportado com SDKs de fala em C#, C++, Java, JavaScript e Python.

Atualmente, para o reconhecimento da conversão de fala em texto com identificação contínua do idioma, você deve criar uma SpeechConfig a partir da cadeia de caracteres do ponto de extremidade wss://{region}.stt.speech.microsoft.com/speech/universal/v2, conforme mostrado nos exemplos de código. Em uma versão futura do SDK, você não precisará defini-lo.

Veja mais exemplos de reconhecimento da conversão de fala em texto com identificação de idioma no GitHub.

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey","YourServiceRegion");

var autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.FromLanguages(
        new string[] { "en-US", "de-DE", "zh-CN" });

using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using (var recognizer = new SpeechRecognizer(
    speechConfig,
    autoDetectSourceLanguageConfig,
    audioConfig))
{
    var speechRecognitionResult = await recognizer.RecognizeOnceAsync();
    var autoDetectSourceLanguageResult =
        AutoDetectSourceLanguageResult.FromResult(speechRecognitionResult);
    var detectedLanguage = autoDetectSourceLanguageResult.Language;
}

Veja mais exemplos de reconhecimento da conversão de fala em texto com identificação de idioma no GitHub.

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Audio;

auto speechConfig = SpeechConfig::FromSubscription("YourSubscriptionKey","YourServiceRegion");

auto autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE", "zh-CN" });

auto recognizer = SpeechRecognizer::FromConfig(
    speechConfig,
    autoDetectSourceLanguageConfig
    );

speechRecognitionResult = recognizer->RecognizeOnceAsync().get();
auto autoDetectSourceLanguageResult =
    AutoDetectSourceLanguageResult::FromResult(speechRecognitionResult);
auto detectedLanguage = autoDetectSourceLanguageResult->Language;

Veja mais exemplos de reconhecimento da conversão de fala em texto com identificação de idioma no GitHub.

AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.fromLanguages(Arrays.asList("en-US", "de-DE"));

SpeechRecognizer recognizer = new SpeechRecognizer(
    speechConfig,
    autoDetectSourceLanguageConfig,
    audioConfig);

Future<SpeechRecognitionResult> future = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = future.get(30, TimeUnit.SECONDS);
AutoDetectSourceLanguageResult autoDetectSourceLanguageResult =
    AutoDetectSourceLanguageResult.fromResult(result);
String detectedLanguage = autoDetectSourceLanguageResult.getLanguage();

recognizer.close();
speechConfig.close();
autoDetectSourceLanguageConfig.close();
audioConfig.close();
result.close();

Veja mais exemplos de reconhecimento da conversão de fala em texto com identificação de idioma no GitHub.

auto_detect_source_language_config = \
        speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["en-US", "de-DE"])
speech_recognizer = speechsdk.SpeechRecognizer(
        speech_config=speech_config, 
        auto_detect_source_language_config=auto_detect_source_language_config, 
        audio_config=audio_config)
result = speech_recognizer.recognize_once()
auto_detect_source_language_result = speechsdk.AutoDetectSourceLanguageResult(result)
detected_language = auto_detect_source_language_result.language
NSArray *languages = @[@"en-US", @"de-DE", @"zh-CN"];
SPXAutoDetectSourceLanguageConfiguration* autoDetectSourceLanguageConfig = \
        [[SPXAutoDetectSourceLanguageConfiguration alloc]init:languages];
SPXSpeechRecognizer* speechRecognizer = \
        [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
                           autoDetectSourceLanguageConfiguration:autoDetectSourceLanguageConfig
                                              audioConfiguration:audioConfig];
SPXSpeechRecognitionResult *result = [speechRecognizer recognizeOnce];
SPXAutoDetectSourceLanguageResult *languageDetectionResult = [[SPXAutoDetectSourceLanguageResult alloc] init:result];
NSString *detectedLanguage = [languageDetectionResult language];
var autoDetectSourceLanguageConfig = SpeechSDK.AutoDetectSourceLanguageConfig.fromLanguages(["en-US", "de-DE"]);
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, autoDetectSourceLanguageConfig, audioConfig);
speechRecognizer.recognizeOnceAsync((result: SpeechSDK.SpeechRecognitionResult) => {
        var languageDetectionResult = SpeechSDK.AutoDetectSourceLanguageResult.fromResult(result);
        var detectedLanguage = languageDetectionResult.language;
},
{});

Modelos de conversão de fala em texto personalizados

Observação

A detecção de idiomas com modelos personalizados só pode ser usada com conversão de fala em tempo real para texto e conversão de fala. A transcrição em lote só dá suporte à detecção de idioma para modelos base padrão.

Este exemplo mostra como usar a detecção de idioma com um ponto de extremidade personalizado. Se o idioma detectado for en-US, o exemplo usa o modelo padrão. Se o idioma detectado for fr-FR, o exemplo usa o ponto de extremidade do modelo personalizado. Para saber mais, confira Implantar um modelo de fala personalizada.

var sourceLanguageConfigs = new SourceLanguageConfig[]
{
    SourceLanguageConfig.FromLanguage("en-US"),
    SourceLanguageConfig.FromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR")
};
var autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.FromSourceLanguageConfigs(
        sourceLanguageConfigs);

Este exemplo mostra como usar a detecção de idioma com um ponto de extremidade personalizado. Se o idioma detectado for en-US, o exemplo usa o modelo padrão. Se o idioma detectado for fr-FR, o exemplo usa o ponto de extremidade do modelo personalizado. Para saber mais, confira Implantar um modelo de fala personalizada.

std::vector<std::shared_ptr<SourceLanguageConfig>> sourceLanguageConfigs;
sourceLanguageConfigs.push_back(
    SourceLanguageConfig::FromLanguage("en-US"));
sourceLanguageConfigs.push_back(
    SourceLanguageConfig::FromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR"));

auto autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig::FromSourceLanguageConfigs(
        sourceLanguageConfigs);

Este exemplo mostra como usar a detecção de idioma com um ponto de extremidade personalizado. Se o idioma detectado for en-US, o exemplo usa o modelo padrão. Se o idioma detectado for fr-FR, o exemplo usa o ponto de extremidade do modelo personalizado. Para saber mais, confira Implantar um modelo de fala personalizada.

List sourceLanguageConfigs = new ArrayList<SourceLanguageConfig>();
sourceLanguageConfigs.add(
    SourceLanguageConfig.fromLanguage("en-US"));
sourceLanguageConfigs.add(
    SourceLanguageConfig.fromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR"));

AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs(
        sourceLanguageConfigs);

Este exemplo mostra como usar a detecção de idioma com um ponto de extremidade personalizado. Se o idioma detectado for en-US, o exemplo usa o modelo padrão. Se o idioma detectado for fr-FR, o exemplo usa o ponto de extremidade do modelo personalizado. Para saber mais, confira Implantar um modelo de fala personalizada.

 en_language_config = speechsdk.languageconfig.SourceLanguageConfig("en-US")
 fr_language_config = speechsdk.languageconfig.SourceLanguageConfig("fr-FR", "The Endpoint Id for custom model of fr-FR")
 auto_detect_source_language_config = speechsdk.languageconfig.AutoDetectSourceLanguageConfig(
        sourceLanguageConfigs=[en_language_config, fr_language_config])

Este exemplo mostra como usar a detecção de idioma com um ponto de extremidade personalizado. Se o idioma detectado for en-US, o exemplo usa o modelo padrão. Se o idioma detectado for fr-FR, o exemplo usa o ponto de extremidade do modelo personalizado. Para saber mais, confira Implantar um modelo de fala personalizada.

SPXSourceLanguageConfiguration* enLanguageConfig = [[SPXSourceLanguageConfiguration alloc]init:@"en-US"];
SPXSourceLanguageConfiguration* frLanguageConfig = \
        [[SPXSourceLanguageConfiguration alloc]initWithLanguage:@"fr-FR"
                                                     endpointId:@"The Endpoint Id for custom model of fr-FR"];
NSArray *languageConfigs = @[enLanguageConfig, frLanguageConfig];
SPXAutoDetectSourceLanguageConfiguration* autoDetectSourceLanguageConfig = \
        [[SPXAutoDetectSourceLanguageConfiguration alloc]initWithSourceLanguageConfigurations:languageConfigs];
var enLanguageConfig = SpeechSDK.SourceLanguageConfig.fromLanguage("en-US");
var frLanguageConfig = SpeechSDK.SourceLanguageConfig.fromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR");
var autoDetectSourceLanguageConfig = SpeechSDK.AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs([enLanguageConfig, frLanguageConfig]);

Executar a tradução de fala

Use a tradução de fala é usada quando é preciso detectar o idioma em uma fonte de áudio e traduzi-lo para outro idioma. Para saber mais, confira Visão geral da tradução de fala.

Observação

Só há suporte para a tradução de fala com a identificação de idioma nos SDKs de Fala em C#, C++, JavaScript e Python. Atualmente, para tradução de fala com identificação de idioma, você deve criar um SpeechConfig a partir da cadeia de caracteres do ponto de extremidade wss://{region}.stt.speech.microsoft.com/speech/universal/v2, conforme mostrado nos exemplos de código. Em uma versão futura do SDK, você não precisará defini-lo.

Veja mais exemplos de tradução de fala com a identificação de idioma no GitHub.

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
using Microsoft.CognitiveServices.Speech.Translation;

public static async Task RecognizeOnceSpeechTranslationAsync()
{
    var region = "YourServiceRegion";
    // Currently the v2 endpoint is required. In a future SDK release you won't need to set it.
    var endpointString = $"wss://{region}.stt.speech.microsoft.com/speech/universal/v2";
    var endpointUrl = new Uri(endpointString);

    var config = SpeechTranslationConfig.FromEndpoint(endpointUrl, "YourSubscriptionKey");

    // Source language is required, but currently ignored. 
    string fromLanguage = "en-US";
    speechTranslationConfig.SpeechRecognitionLanguage = fromLanguage;

    speechTranslationConfig.AddTargetLanguage("de");
    speechTranslationConfig.AddTargetLanguage("fr");

    var autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig.FromLanguages(new string[] { "en-US", "de-DE", "zh-CN" });

    using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();

    using (var recognizer = new TranslationRecognizer(
        speechTranslationConfig, 
        autoDetectSourceLanguageConfig,
        audioConfig))
    {

        Console.WriteLine("Say something or read from file...");
        var result = await recognizer.RecognizeOnceAsync().ConfigureAwait(false);

        if (result.Reason == ResultReason.TranslatedSpeech)
        {
            var lidResult = result.Properties.GetProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguageResult);

            Console.WriteLine($"RECOGNIZED in '{lidResult}': Text={result.Text}");
            foreach (var element in result.Translations)
            {
                Console.WriteLine($"    TRANSLATED into '{element.Key}': {element.Value}");
            }
        }
    }
}

Veja mais exemplos de tradução de fala com a identificação de idioma no GitHub.

auto region = "YourServiceRegion";
// Currently the v2 endpoint is required. In a future SDK release you won't need to set it.
auto endpointString = std::format("wss://{}.stt.speech.microsoft.com/speech/universal/v2", region);
auto config = SpeechTranslationConfig::FromEndpoint(endpointString, "YourSubscriptionKey");

auto autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE" });

// Sets source and target languages
// The source language will be detected by the language detection feature. 
// However, the SpeechRecognitionLanguage still need to set with a locale string, but it will not be used as the source language.
// This will be fixed in a future version of Speech SDK.
auto fromLanguage = "en-US";
config->SetSpeechRecognitionLanguage(fromLanguage);
config->AddTargetLanguage("de");
config->AddTargetLanguage("fr");

// Creates a translation recognizer using microphone as audio input.
auto recognizer = TranslationRecognizer::FromConfig(config, autoDetectSourceLanguageConfig);
cout << "Say something...\n";

// Starts translation, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed. The task returns the recognized text as well as the translation.
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query.
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
auto result = recognizer->RecognizeOnceAsync().get();

// Checks result.
if (result->Reason == ResultReason::TranslatedSpeech)
{
    cout << "RECOGNIZED: Text=" << result->Text << std::endl;

    for (const auto& it : result->Translations)
    {
        cout << "TRANSLATED into '" << it.first.c_str() << "': " << it.second.c_str() << std::endl;
    }
}
else if (result->Reason == ResultReason::RecognizedSpeech)
{
    cout << "RECOGNIZED: Text=" << result->Text << " (text could not be translated)" << std::endl;
}
else if (result->Reason == ResultReason::NoMatch)
{
    cout << "NOMATCH: Speech could not be recognized." << std::endl;
}
else if (result->Reason == ResultReason::Canceled)
{
    auto cancellation = CancellationDetails::FromResult(result);
    cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;

    if (cancellation->Reason == CancellationReason::Error)
    {
        cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
        cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
        cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl;
    }
}

Veja mais exemplos de tradução de fala com a identificação de idioma no GitHub.

import azure.cognitiveservices.speech as speechsdk
import time
import json

speech_key, service_region = "YourSubscriptionKey","YourServiceRegion"
weatherfilename="en-us_zh-cn.wav"

# set up translation parameters: source language and target languages
# Currently the v2 endpoint is required. In a future SDK release you won't need to set it. 
endpoint_string = "wss://{}.stt.speech.microsoft.com/speech/universal/v2".format(service_region)
translation_config = speechsdk.translation.SpeechTranslationConfig(
    subscription=speech_key,
    endpoint=endpoint_string,
    speech_recognition_language='en-US',
    target_languages=('de', 'fr'))
audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)

# Specify the AutoDetectSourceLanguageConfig, which defines the number of possible languages
auto_detect_source_language_config = speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["en-US", "de-DE", "zh-CN"])

# Creates a translation recognizer using and audio file as input.
recognizer = speechsdk.translation.TranslationRecognizer(
    translation_config=translation_config, 
    audio_config=audio_config,
    auto_detect_source_language_config=auto_detect_source_language_config)

# Starts translation, and returns after a single utterance is recognized. The end of a
# single utterance is determined by listening for silence at the end or until a maximum of 15
# seconds of audio is processed. The task returns the recognition text as result.
# Note: Since recognize_once() returns only a single utterance, it is suitable only for single
# shot recognition like command or query.
# For long-running multi-utterance recognition, use start_continuous_recognition() instead.
result = recognizer.recognize_once()

# Check the result
if result.reason == speechsdk.ResultReason.TranslatedSpeech:
    print("""Recognized: {}
    German translation: {}
    French translation: {}""".format(
        result.text, result.translations['de'], result.translations['fr']))
elif result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(result.text))
    detectedSrcLang = result.properties[speechsdk.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguageResult]
    print("Detected Language: {}".format(detectedSrcLang))
elif result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
    print("Translation canceled: {}".format(result.cancellation_details.reason))
    if result.cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(result.cancellation_details.error_details))

Executar e usar um contêiner

Os contêineres de Fala fornecem APIs de ponto de extremidade de consulta baseadas em websocket que são acessadas através do SDK de Fala e da CLI de Fala. Por padrão, o SDK de Fala e a CLI de Fala usam o serviço público de Fala. Para usar o contêiner, você precisa alterar o método de inicialização. Use uma URL de host de contêiner em vez de chave e região.

Quando você executa a ID de idioma em um contêiner, use o objeto SourceLanguageRecognizer em vez de SpeechRecognizer ou TranslationRecognizer.

Para obter mais informações sobre contêineres, consulte o guia de instruções contêineres de fala de identificação de idioma.

Implementar a transcrição em lote de conversão de fala em texto

Para identificar idiomas com a API REST da transcrição em lote, use a propriedade languageIdentification no corpo da sua solicitação Transcriptions_Create.

Aviso

A transcrição em lote só dá suporte à identificação de idioma para modelos base padrão. Se a detecção de idioma e o modelo personalizado forem especificados na solicitação de transcrição, o serviço fará fallback para usar os modelos base para os idiomas candidatos especificados. Isso pode resultar em reconhecimentos inesperados.

Se o cenário de conversão de fala em texto exigir identificação de idioma e modelos personalizados, use a fala em tempo real para o texto em vez da transcrição em lote.

O exemplo a seguir mostra o uso da propriedade languageIdentification com quatro idiomas candidatos. Para obter mais informações sobre propriedades de solicitações, confira Criar uma transcrição em lote.

{
    <...>
    
    "properties": {
    <...>
    
        "languageIdentification": {
            "candidateLocales": [
            "en-US",
            "ja-JP",
            "zh-CN",
            "hi-IN"
            ]
        },	
        <...>
    }
}