Taalidentificatie implementeren

Taalidentificatie wordt gebruikt om talen te identificeren die in audio worden gesproken in vergelijking met een lijst met ondersteunde talen.

Gebruiksvoorbeelden voor taalidentificatie (LID):

  • Spraak-naar-tekstherkenning wanneer u de taal in een audiobron moet identificeren en deze vervolgens naar tekst moet transcriberen.
  • Spraakomzetting wanneer u de taal in een audiobron moet identificeren en deze vervolgens naar een andere taal moet vertalen.

Voor spraakherkenning is de initiële latentie hoger met taalidentificatie. U moet deze optionele functie alleen indien nodig opnemen.

Configuratieopties instellen

Of u nu taalidentificatie gebruikt met spraak-naar-tekst of spraakomzetting, er zijn enkele algemene concepten en configuratieopties.

Vervolgens maakt u een aanvraag voor eenmalige of continue herkenning voor de Speech-service.

Belangrijk

Taalidentificatie-API's worden vereenvoudigd met de Speech SDK versie 1.25 en hoger. De SpeechServiceConnection_SingleLanguageIdPriority en SpeechServiceConnection_ContinuousLanguageIdPriority eigenschappen zijn verwijderd. Eén eigenschap SpeechServiceConnection_LanguageIdMode vervangt deze. U hoeft geen prioriteit meer te geven tussen lage latentie en hoge nauwkeurigheid. Voor continue spraakherkenning of vertaling hoeft u alleen te selecteren of u aan het begin of continue taalidentificatie wilt uitvoeren.

Dit artikel bevat codefragmenten om de concepten te beschrijven. Koppelingen naar volledige voorbeelden voor elke use-case worden verstrekt.

Kandidaattalen

U geeft kandidaattalen aan het AutoDetectSourceLanguageConfig object. U verwacht dat ten minste één van de kandidaten in de audio staat. U kunt maximaal vier talen opnemen voor at-start LID of maximaal 10 talen voor continue LID. De Speech-service retourneert een van de beschikbare talen, zelfs als deze talen niet in de audio waren opgenomen. Als (Frans) en en-US (Engels) bijvoorbeeld fr-FR worden verstrekt als kandidaten, maar Duits wordt gesproken, retourneert fr-FR de service of en-US.

U moet de volledige landinstelling opgeven met streepjes (-) scheidingsteken, maar voor taalidentificatie wordt slechts één landinstelling per basistaal gebruikt. Neem niet meerdere landinstellingen op voor dezelfde taal, bijvoorbeeld en-US en 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];

Zie ondersteunde talen voor meer informatie.

Aan het begin en continue taalidentificatie

Spraak ondersteunt zowel at-start als continue taalidentificatie (LID).

Notitie

Continue taalidentificatie wordt alleen ondersteund met Spraak-SDK's in C#, C++, Java (alleen voor spraak-naar-tekst), JavaScript (alleen voor spraak-naar-tekst) en Python.

  • Bij het starten identificeert LID de taal eenmaal binnen de eerste paar seconden audio. Gebruik at-start LID als de taal in de audio niet verandert. Met at-start LID wordt één taal gedetecteerd en in minder dan 5 seconden geretourneerd.
  • Continue LID kan meerdere talen identificeren tijdens de audio. Gebruik continue LID als de taal in de audio kan veranderen. Continue LID biedt geen ondersteuning voor het wijzigen van talen binnen dezelfde zin. Als u bijvoorbeeld voornamelijk Spaans spreekt en een aantal Engelse woorden invoegt, wordt de taalwijziging per woord niet gedetecteerd.

U implementeert at-start LID of continue LID door methoden aan te roepen om eenmaal of doorlopend te herkennen. Continue LID wordt alleen ondersteund met continue herkenning.

Eenmaal of doorlopend herkennen

Taalidentificatie wordt voltooid met herkenningsobjecten en -bewerkingen. Vraag de Speech-service om audio te herkennen.

Notitie

Verwar herkenning niet met identificatie. Herkenning kan worden gebruikt met of zonder taalidentificatie.

Roep de methode 'eenmaal herkennen' aan of de methoden voor continue herkenning en stop. U kiest uit:

  • Herkennen eenmaal met At-start LID. Continue LID wordt niet één keer ondersteund voor herkennen.
  • Gebruik continue herkenning met at-start LID.
  • Gebruik continue herkenning met continue LID.

De SpeechServiceConnection_LanguageIdMode eigenschap is alleen vereist voor continue LID. Zonder deze is de Speech-service standaard ingesteld op at-start LID. De ondersteunde waarden zijn AtStart voor at-start LID of Continuous voor continue 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()

Spraak naar tekst gebruiken

U gebruikt Spraak-naar-tekstherkenning wanneer u de taal in een audiobron moet identificeren en deze vervolgens wilt transcriberen naar tekst. Zie Het overzicht van spraak-naar-tekst voor meer informatie.

Notitie

Spraak-naar-tekstherkenning met taalidentificatie aan het begin wordt ondersteund met Spraak-SDK's in C#, C++, Python, Java, JavaScript en Objective-C. Spraak-naar-tekstherkenning met continue taalidentificatie wordt alleen ondersteund met Spraak-SDK's in C#, C++, Java, JavaScript en Python.

Op dit moment moet u voor spraak-naar-tekstherkenning met continue taalidentificatie een SpeechConfig maken op basis van de wss://{region}.stt.speech.microsoft.com/speech/universal/v2 eindpunttekenreeks, zoals wordt weergegeven in codevoorbeelden. In een toekomstige SDK-release hoeft u deze niet in te stellen.

Bekijk meer voorbeelden van spraak-naar-tekstherkenning met taalidentificatie op 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;
}

Bekijk meer voorbeelden van spraak-naar-tekstherkenning met taalidentificatie op 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;

Bekijk meer voorbeelden van spraak-naar-tekstherkenning met taalidentificatie op 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();

Bekijk meer voorbeelden van spraak-naar-tekstherkenning met taalidentificatie op 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;
},
{});

Aangepaste spraak-naar-tekstmodellen

Notitie

Taaldetectie met aangepaste modellen kan alleen worden gebruikt met realtime spraak naar tekst en spraakomzetting. Batchtranscriptie ondersteunt alleen taaldetectie voor standaardbasismodellen.

In dit voorbeeld ziet u hoe u taaldetectie gebruikt met een aangepast eindpunt. Als de gedetecteerde taal is en-US, wordt in het voorbeeld het standaardmodel gebruikt. Als de gedetecteerde taal is fr-FR, gebruikt het voorbeeld het eindpunt van het aangepaste model. Zie Een aangepast spraakmodel implementeren voor meer informatie.

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

In dit voorbeeld ziet u hoe u taaldetectie gebruikt met een aangepast eindpunt. Als de gedetecteerde taal is en-US, wordt in het voorbeeld het standaardmodel gebruikt. Als de gedetecteerde taal is fr-FR, gebruikt het voorbeeld het eindpunt van het aangepaste model. Zie Een aangepast spraakmodel implementeren voor meer informatie.

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

In dit voorbeeld ziet u hoe u taaldetectie gebruikt met een aangepast eindpunt. Als de gedetecteerde taal is en-US, wordt in het voorbeeld het standaardmodel gebruikt. Als de gedetecteerde taal is fr-FR, gebruikt het voorbeeld het eindpunt van het aangepaste model. Zie Een aangepast spraakmodel implementeren voor meer informatie.

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

In dit voorbeeld ziet u hoe u taaldetectie gebruikt met een aangepast eindpunt. Als de gedetecteerde taal is en-US, wordt in het voorbeeld het standaardmodel gebruikt. Als de gedetecteerde taal is fr-FR, gebruikt het voorbeeld het eindpunt van het aangepaste model. Zie Een aangepast spraakmodel implementeren voor meer informatie.

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

In dit voorbeeld ziet u hoe u taaldetectie gebruikt met een aangepast eindpunt. Als de gedetecteerde taal is en-US, wordt in het voorbeeld het standaardmodel gebruikt. Als de gedetecteerde taal is fr-FR, gebruikt het voorbeeld het eindpunt van het aangepaste model. Zie Een aangepast spraakmodel implementeren voor meer informatie.

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

Spraakomzetting uitvoeren

Gebruik Spraakomzetting wanneer u de taal in een audiobron moet identificeren en deze vervolgens naar een andere taal moet vertalen. Zie Het overzicht van spraakomzetting voor meer informatie.

Notitie

Spraakomzetting met taalidentificatie wordt alleen ondersteund met Spraak-SDK's in C#, C++, JavaScript en Python. Op dit moment moet u voor spraakomzetting met taalidentificatie een SpeechConfig maken op basis van de wss://{region}.stt.speech.microsoft.com/speech/universal/v2 eindpunttekenreeks, zoals wordt weergegeven in codevoorbeelden. In een toekomstige SDK-release hoeft u deze niet in te stellen.

Bekijk meer voorbeelden van spraakomzetting met taalidentificatie op 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}");
            }
        }
    }
}

Bekijk meer voorbeelden van spraakomzetting met taalidentificatie op 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;
    }
}

Bekijk meer voorbeelden van spraakomzetting met taalidentificatie op 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))

Een container uitvoeren en gebruiken

Spraakcontainers bieden websocket-api's voor query-eindpunten die toegankelijk zijn via de Speech SDK en Speech CLI. De Speech SDK en Speech CLI maken standaard gebruik van de openbare Speech-service. Als u de container wilt gebruiken, moet u de initialisatiemethode wijzigen. Gebruik een containerhost-URL in plaats van sleutel en regio.

Wanneer u de taal-id in een container uitvoert, gebruikt u het SourceLanguageRecognizer object in plaats van SpeechRecognizer of TranslationRecognizer.

Zie de instructies voor spraakcontainers voor taalidentificatie voor meer informatie over containers.

Spraak naar batchtranscriptie implementeren

Als u talen wilt identificeren met de REST API voor Batch-transcriptie, gebruikt languageIdentification u de eigenschap in de hoofdtekst van uw Transcriptions_Create aanvraag.

Waarschuwing

Batchtranscriptie ondersteunt alleen taalidentificatie voor standaardbasismodellen. Als zowel taalidentificatie als een aangepast model worden opgegeven in de transcriptieaanvraag, valt de service terug om de basismodellen voor de opgegeven kandidaattalen te gebruiken. Dit kan leiden tot onverwachte herkenningsresultaten.

Als uw spraak-naar-tekstscenario zowel taalidentificatie als aangepaste modellen vereist, gebruikt u realtime spraak naar tekst in plaats van batchtranscriptie.

In het volgende voorbeeld ziet u het gebruik van de languageIdentification eigenschap met vier kandidaattalen. Zie Een batchtranscriptie maken voor meer informatie over aanvraageigenschappen.

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