Implementera språkidentifiering

Språkidentifiering används för att identifiera språk som talas i ljud jämfört med en lista över språk som stöds.

Användningsfall för språkidentifiering (LID) omfattar:

  • Tal till text-igenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text.
  • Talöversättning när du behöver identifiera språket i en ljudkälla och sedan översätta det till ett annat språk.

För taligenkänning är den inledande svarstiden högre med språkidentifiering. Du bör bara inkludera den här valfria funktionen efter behov.

Ange konfigurationsalternativ

Oavsett om du använder språkidentifiering med tal till text eller med talöversättning finns det några vanliga begrepp och konfigurationsalternativ.

Sedan gör du en begäran om identifiering en gång eller kontinuerlig igenkänning till Speech-tjänsten.

Viktigt!

API:er för språkidentifiering förenklas med Speech SDK version 1.25 och senare. Egenskaperna SpeechServiceConnection_SingleLanguageIdPriority och SpeechServiceConnection_ContinuousLanguageIdPriority har tagits bort. En enskild egenskap SpeechServiceConnection_LanguageIdMode ersätter dem. Du behöver inte längre prioritera mellan låg svarstid och hög noggrannhet. För kontinuerlig taligenkänning eller översättning behöver du bara välja om du vill köra vid start eller kontinuerlig språkidentifiering.

Den här artikeln innehåller kodfragment för att beskriva begreppen. Länkar till fullständiga exempel för varje användningsfall finns.

Kandidatspråk

Du tillhandahåller kandidatspråk med objektet AutoDetectSourceLanguageConfig . Du förväntar dig att minst en av kandidaterna är i ljudet. Du kan inkludera upp till fyra språk för start-LID eller upp till 10 språk för kontinuerlig LID. Speech-tjänsten returnerar ett av de kandidatspråk som tillhandahålls även om dessa språk inte fanns i ljudet. Om till exempel fr-FR (franska) och en-US (engelska) tillhandahålls som kandidater, men tyska talas, returnerar tjänsten antingen fr-FR eller en-US.

Du måste ange den fullständiga språkvarianten med bindestreck (-) avgränsare, men språkidentifiering använder bara ett språk per basspråk. Ta inte med flera nationella inställningar för samma språk, till exempel en-US och 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];

Mer information finns i språk som stöds.

Språkidentifiering vid start och kontinuerlig språkidentifiering

Speech stöder både start- och kontinuerlig språkidentifiering (LID).

Kommentar

Kontinuerlig språkidentifiering stöds endast med Speech SDK:er i C#, C++, Java (endast för tal till text), JavaScript (endast för tal till text) och Python.

  • Start-LID identifierar språket en gång inom de första sekunderna av ljudet. Använd start-LID om språket i ljudet inte ändras. Med start-LID identifieras ett enda språk och returneras på mindre än 5 sekunder.
  • Kontinuerlig LID kan identifiera flera språk under ljudet. Använd kontinuerlig LID om språket i ljudet kan ändras. Kontinuerlig LID har inte stöd för att ändra språk inom samma mening. Om du till exempel främst talar spanska och infogar vissa engelska ord identifieras inte språkändringen per ord.

Du implementerar start-LID eller kontinuerlig LID genom att anropa metoder för att identifiera en gång eller kontinuerligt. Kontinuerlig LID stöds endast med kontinuerlig igenkänning.

Identifiera en gång eller kontinuerligt

Språkidentifiering slutförs med igenkänningsobjekt och åtgärder. Skicka en begäran till Speech-tjänsten om igenkänning av ljud.

Kommentar

Blanda inte ihop igenkänning med identifiering. Igenkänning kan användas med eller utan språkidentifiering.

Anropa antingen metoden "identifiera en gång" eller starta och stoppa metoder för kontinuerlig igenkänning. Du väljer mellan:

  • Identifiera en gång med Start-LID. Kontinuerlig LID stöds inte för att identifiera en gång.
  • Använd kontinuerlig igenkänning med start-LID.
  • Använd kontinuerlig igenkänning med kontinuerlig LID.

Egenskapen SpeechServiceConnection_LanguageIdMode krävs endast för kontinuerlig LID. Utan den är Speech-tjänsten som standard start-LID. De värden som stöds gäller AtStart för start-LID eller Continuous kontinuerlig LID.

// 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()

Använda tal till text

Du använder Tal till textigenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text. Mer information finns i Översikt över tal till text.

Kommentar

Tal till text-igenkänning med språkidentifiering vid start stöds med Speech SDK:er i C#, C++, Python, Java, JavaScript och Objective-C. Tal till text-igenkänning med kontinuerlig språkidentifiering stöds endast med Speech SDK:er i C#, C++, Java, JavaScript och Python.

För tal till text-igenkänning med kontinuerlig språkidentifiering måste du skapa en SpeechConfig från slutpunktssträngen wss://{region}.stt.speech.microsoft.com/speech/universal/v2 , som visas i kodexempel. I en framtida SDK-version behöver du inte ange den.

Se fler exempel på tal till textigenkänning med språkidentifiering på 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;
}

Se fler exempel på tal till textigenkänning med språkidentifiering på 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;

Se fler exempel på tal till textigenkänning med språkidentifiering på 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();

Se fler exempel på tal till textigenkänning med språkidentifiering på 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;
},
{});

Anpassade modeller för tal till text

Kommentar

Språkidentifiering med anpassade modeller kan bara användas med tal till text och talöversättning i realtid. Batch-transkription stöder endast språkidentifiering för standardbasmodeller.

Det här exemplet visar hur du använder språkidentifiering med en anpassad slutpunkt. Om det identifierade språket är en-USanvänder exemplet standardmodellen. Om det identifierade språket är fr-FRanvänder exemplet slutpunkten för den anpassade modellen. Mer information finns i Distribuera en anpassad talmodell.

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);

Det här exemplet visar hur du använder språkidentifiering med en anpassad slutpunkt. Om det identifierade språket är en-USanvänder exemplet standardmodellen. Om det identifierade språket är fr-FRanvänder exemplet slutpunkten för den anpassade modellen. Mer information finns i Distribuera en anpassad talmodell.

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);

Det här exemplet visar hur du använder språkidentifiering med en anpassad slutpunkt. Om det identifierade språket är en-USanvänder exemplet standardmodellen. Om det identifierade språket är fr-FRanvänder exemplet slutpunkten för den anpassade modellen. Mer information finns i Distribuera en anpassad talmodell.

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);

Det här exemplet visar hur du använder språkidentifiering med en anpassad slutpunkt. Om det identifierade språket är en-USanvänder exemplet standardmodellen. Om det identifierade språket är fr-FRanvänder exemplet slutpunkten för den anpassade modellen. Mer information finns i Distribuera en anpassad talmodell.

 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])

Det här exemplet visar hur du använder språkidentifiering med en anpassad slutpunkt. Om det identifierade språket är en-USanvänder exemplet standardmodellen. Om det identifierade språket är fr-FRanvänder exemplet slutpunkten för den anpassade modellen. Mer information finns i Distribuera en anpassad talmodell.

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]);

Köra talöversättning

Använd Talöversättning när du behöver identifiera språket i en ljudkälla och sedan översätta det till ett annat språk. Mer information finns i Översikt över talöversättning.

Kommentar

Talöversättning med språkidentifiering stöds endast med Speech SDK:er i C#, C++, JavaScript och Python. För närvarande för talöversättning med språkidentifiering måste du skapa en SpeechConfig från slutpunktssträngen wss://{region}.stt.speech.microsoft.com/speech/universal/v2 , enligt kodexemplen. I en framtida SDK-version behöver du inte ange den.

Se fler exempel på talöversättning med språkidentifiering på 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}");
            }
        }
    }
}

Se fler exempel på talöversättning med språkidentifiering på 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;
    }
}

Se fler exempel på talöversättning med språkidentifiering på 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))

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

När du kör språk-ID i en container använder du SourceLanguageRecognizer objektet i stället för SpeechRecognizer eller TranslationRecognizer.

Mer information om containrar finns i vägledningen för talcontainrar för språkidentifiering.

Implementera transkription av tal till textbatch

Om du vill identifiera språk med REST API för Batch-transkription använder du languageIdentification egenskapen i brödtexten i din Transcriptions_Create begäran.

Varning

Batch-transkription stöder endast språkidentifiering för standardbasmodeller. Om både språkidentifiering och en anpassad modell anges i transkriptionsbegäran återgår tjänsten till att använda basmodellerna för de angivna kandidatspråken. Detta kan resultera i oväntade igenkänningsresultat.

Om ditt tal till text-scenario kräver både språkidentifiering och anpassade modeller använder du tal till text i realtid i stället för batch-transkription.

I följande exempel visas användningen av languageIdentification egenskapen med fyra kandidatspråk. Mer information om egenskaper för begäran finns i Skapa en batch-transkription.

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