Compartilhar via


Implementar detecção de idioma

A identificação de idioma é usada para identificar automaticamente os idiomas falados em áudio comparando-o 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.

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 Speech 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) 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 oferece suporte tanto à identificação inicial quanto à identificação contínua da linguagem (LID).

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.

  • O LID inicial identifica o idioma uma vez nos primeiros segundos do áudio. Use LID no início se o idioma do áudio não mudar. Com o LID na inicialização, um único idioma é detectado e retornado em menos de 5 segundos.
  • A LID contínua pode identificar vários idiomas durante o áudio. Use LID contínuo se o idioma no áudio puder mudar. 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.

Você implementa LID no início ou LID contínuo chamando métodos para reconhecer uma vez ou contínuo. O LID contínuo só é compatível 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 "reconhecer uma vez" ou os métodos de reconhecimento contínuo de início e parada. Escolha entre:

  • Reconhecimento único com a LID inicial O LID contínuo não é compatível com reconhecimento único.
  • 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 ele, o serviço Speech assume como padrão o LID na inicializaçã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 reconhecimento de fala em texto com identificação contínua de idioma, é necessário criar um SpeechConfig a partir do ponto de extremidade, conforme mostrado nos exemplos de código.

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.FromEndpoint(new Uri("YourSpeechEndpoint"), "YourSpeechKey");

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::FromEndpoint("YourServiceEndpoint", "YourSpeechResoureKey");

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.

Esse 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 usará 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);

Esse 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 usará 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);

Esse 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 usará 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);

Esse 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 usará 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])

Esse 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 usará 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.

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 endpointUrl = new Uri("YourSpeechResoureEndpoint");

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

    // 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 endpointString = "YourSpeechResoureEndpoint";
auto config = SpeechTranslationConfig::FromEndpoint(endpointString, "YourSpeechResoureKey");

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 endpoint 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_endpoint = "YourSpeechResoureKey","YourServiceEndpoint"
weatherfilename="en-us_zh-cn.wav"

# set up translation parameters: source language and target languages
translation_config = speechsdk.translation.SpeechTranslationConfig(
    subscription=speech_key,
    endpoint=service_endpoint,
    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 Speech SDK e do Speech CLI. 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 a chave e o ponto de extremidade.

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, veja o guia prático de contêineres de fala para identificação de idioma.

Implementar transcrição em lote de fala para texto

Para identificar idiomas com a API REST da transcrição em lote, use a propriedade languageIdentification no corpo da sua solicitação Transcrições - Enviar.

Aviso

A transcrição em lote só dá suporte à 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 retornará 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"
            ]
        },	
        <...>
    }
}