Implementar a identificação de idioma

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

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

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

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

Definir opções de configuração

Quer utilize a identificação linguística com a conversão de voz em texto ou com a tradução de voz, existem alguns conceitos comuns e opções de configuração.

Em seguida, você faz uma solicitação de reconhecimento uma vez ou contínua para o serviço de fala.

Importante

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

Este artigo fornece trechos de código para descrever os conceitos. Links para amostras completas para cada caso de uso são fornecidos.

Línguas candidatas

Você fornece o objeto aos AutoDetectSourceLanguageConfig idiomas candidatos. Espera-se que pelo menos um dos candidatos esteja no áudio. Você pode incluir até quatro idiomas para LID inicial ou até 10 idiomas para LID contínuo. O serviço de Fala retorna um dos idiomas candidatos fornecidos, mesmo que esses idiomas não estejam no áudio. Por exemplo, se fr-FR (francês) e en-US (inglês) são fornecidos como candidatos, mas o alemão é falado, o serviço retorna ou fr-FRen-US.

Você deve fornecer a localidade completa com separador de traço (-), mas a identificação do 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];

Para obter mais informações, consulte os idiomas suportados.

Identificação linguística inicial e contínua

A fala suporta a identificação contínua e contínua da linguagem (LID).

Nota

A identificação contínua de linguagem só é suportada com SDKs de fala em C#, C++, Java (somente para fala para texto), JavaScript (somente para fala para texto) e Python.

  • No início, o LID identifica o idioma uma vez nos primeiros segundos de áudio. Use o LID inicial se o idioma do áudio não mudar. Com o LID inicial, um único idioma é detetado e retornado em menos de 5 segundos.
  • O LID contínuo pode identificar vários idiomas durante o áudio. Use LID contínuo se o idioma no áudio puder mudar. O LID contínuo não suporta a mudança de idiomas dentro da mesma frase. Por exemplo, se você estiver falando espanhol principalmente e inserir algumas palavras em inglês, isso não detetará a mudança de idioma por palavra.

Você implementa o LID inicial ou o LID contínuo chamando métodos para reconhecer uma vez ou continuamente. O LID contínuo só é suportado com reconhecimento contínuo.

Reconhecer uma vez ou continuamente

A identificação do idioma é completada com objetos e operações de reconhecimento. Faça uma solicitação ao serviço de fala para reconhecimento de áudio.

Nota

Não confunda reconhecimento com identificação. O reconhecimento pode ser utilizado com ou sem identificação linguística.

Chame o método "reconhecer uma vez" ou os métodos de reconhecimento contínuo iniciar e parar. Você escolhe entre:

  • Reconheça uma vez com a tampa inicial. O LID contínuo não é suportado para reconhecer uma vez.
  • Use o reconhecimento contínuo com a tampa inicial.
  • Use o reconhecimento contínuo com LID contínuo.

A SpeechServiceConnection_LanguageIdMode propriedade só é necessária para LID contínuo. Sem ele, o serviço de Fala assume como padrão a LID inicial. Os valores suportados são AtStart para LID inicial ou Continuous para LID contínuo.

// 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 fala para texto

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

Nota

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

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

Veja mais exemplos de reconhecimento de fala para 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 de fala para 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 de fala para 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 de fala para 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 personalizados de fala para texto

Nota

A deteção de idioma com modelos personalizados só pode ser usada com conversão de fala para texto e fala em tempo real. A transcrição em lote suporta apenas a deteção de idioma para modelos base padrão.

Este exemplo mostra como usar a deteção de idioma com um ponto de extremidade personalizado. Se o idioma detetado for en-US, o exemplo usará o modelo padrão. Se o idioma detetado for fr-FR, o exemplo usará o ponto de extremidade do modelo personalizado. Para obter mais informações, consulte Implantar um modelo de fala personalizado.

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 deteção de idioma com um ponto de extremidade personalizado. Se o idioma detetado for en-US, o exemplo usará o modelo padrão. Se o idioma detetado for fr-FR, o exemplo usará o ponto de extremidade do modelo personalizado. Para obter mais informações, consulte Implantar um modelo de fala personalizado.

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 deteção de idioma com um ponto de extremidade personalizado. Se o idioma detetado for en-US, o exemplo usará o modelo padrão. Se o idioma detetado for fr-FR, o exemplo usará o ponto de extremidade do modelo personalizado. Para obter mais informações, consulte Implantar um modelo de fala personalizado.

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 deteção de idioma com um ponto de extremidade personalizado. Se o idioma detetado for en-US, o exemplo usará o modelo padrão. Se o idioma detetado for fr-FR, o exemplo usará o ponto de extremidade do modelo personalizado. Para obter mais informações, consulte Implantar um modelo de fala personalizado.

 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 deteção de idioma com um ponto de extremidade personalizado. Se o idioma detetado for en-US, o exemplo usará o modelo padrão. Se o idioma detetado for fr-FR, o exemplo usará o ponto de extremidade do modelo personalizado. Para obter mais informações, consulte Implantar um modelo de fala personalizado.

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 tradução de fala

Use a tradução de fala quando precisar identificar o idioma em uma fonte de áudio e, em seguida, traduzi-lo para outro idioma. Para obter mais informações, consulte Visão geral da tradução de fala.

Nota

A tradução de fala com identificação de idioma só é suportada com 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 wss://{region}.stt.speech.microsoft.com/speech/universal/v2 partir da cadeia de caracteres do ponto de extremidade, conforme mostrado em 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 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 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 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 por meio 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 de Fala público. 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.

Ao executar a ID de idioma em um contêiner, use o SourceLanguageRecognizer objeto em vez de SpeechRecognizer ou TranslationRecognizer.

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

Implementar transcrição de fala para texto em lote

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

Aviso

A transcrição em lote suporta apenas a identificação de idioma para modelos base padrão. Se a identificação do idioma e um modelo personalizado forem especificados na solicitação de transcrição, o serviço voltará a usar os modelos base para os idiomas candidatos especificados. Isso pode resultar em resultados de reconhecimento inesperados.

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

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

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