Implementace identifikace jazyka

Identifikace jazyka se používá k identifikaci jazyků mluvených ve zvuku v porovnání se seznamem podporovaných jazyků.

Případy použití identifikace jazyka (LID) zahrnují:

  • Rozpoznávání řeči na text, když potřebujete identifikovat jazyk ve zvukovém zdroji a pak ho přepsat na text.
  • Překlad řeči, když potřebujete identifikovat jazyk ve zvukovém zdroji a pak ho přeložit do jiného jazyka.

Při rozpoznávání řeči je počáteční latence vyšší s identifikací jazyka. Tuto volitelnou funkci byste měli zahrnout jenom podle potřeby.

Nastavení možností konfigurace

Ať už používáte identifikaci jazyka s řečí na text nebo překlad řeči, existují některé běžné koncepty a možnosti konfigurace.

Pak službě Speech provedete žádost o rozpoznávání jednou nebo nepřetržitým rozpoznáváním .

Důležité

Rozhraní API pro identifikaci jazyka jsou zjednodušená pomocí sady Speech SDK verze 1.25 a novější. Odebrali jsme vlastnosti SpeechServiceConnection_SingleLanguageIdPrioritySpeechServiceConnection_ContinuousLanguageIdPriority . Jedna vlastnost SpeechServiceConnection_LanguageIdMode je nahrazuje. Už nemusíte určovat prioritu mezi nízkou latencí a vysokou přesností. U průběžného rozpoznávání řeči nebo překladu stačí vybrat, jestli se má spustit při spuštění nebo průběžné identifikaci jazyka.

Tento článek obsahuje fragmenty kódu, které popisují koncepty. K dispozici jsou odkazy na kompletní ukázky pro každý případ použití.

Kandidátské jazyky

Objekt poskytujete kandidátským jazykům AutoDetectSourceLanguageConfig . Očekáváte, že alespoň jeden z kandidátů je ve zvukovém přenosu. Můžete zahrnout až čtyři jazyky pro počáteční lid nebo až 10 jazyků pro kontinuální lid. Služba Speech vrátí jeden z kandidátských jazyků, které jsou k dispozici i v případě, že tyto jazyky nebyly ve zvukovém přenosu. Pokud jsou například fr-FR jako kandidáti k dispozici (francouzština) a en-US (angličtina), ale němčina je mluvená, vrátí služba buď fr-FR nebo en-US.

Musíte zadat úplné národní prostředí s oddělovačem pomlčky (-), ale identifikace jazyka používá pouze jedno národní prostředí na základní jazyk. Nezahrnujte více národních prostředí pro stejný jazyk, například en-US a 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];

Další informace najdete v podporovaných jazycích.

Počáteční a průběžná identifikace jazyka

Řeč podporuje počáteční i kontinuální identifikaci jazyka (LID).

Poznámka:

Průběžná identifikace jazyka se podporuje jenom u sad Speech SDK v jazyce C#, C++, Java (pouze pro převod řeči na text), JavaScriptu (pouze pro převod řeči na text) a Pythonu.

  • Při spuštění lid identifikuje jazyk jednou během prvních několika sekund zvuku. Pokud se jazyk ve zvuku nezmění, použijte při spuštění lid. Při počátečním víku se zjistí jeden jazyk a vrátí se za méně než 5 sekund.
  • Nepřetržitý lid dokáže během zvuku identifikovat více jazyků. Pokud by se jazyk zvuku mohl změnit, použijte nepřetržité víko. Průběžné rozhraní LID nepodporuje změny jazyků ve stejné větě. Pokud například primárně mluvíte ve španělštině a vkládáte některá anglická slova, nerozpozná se změna jazyka pro jednotlivá slova.

Rozhraní LID nebo kontinuální LID implementujete tak, že voláte metody pro rozpoznávání jednou nebo nepřetržitě. Průběžné víko je podporováno pouze s průběžným rozpoznáváním.

Rozpoznávání jednou nebo nepřetržitě

Identifikace jazyka je dokončena pomocí objektů rozpoznávání a operací. Požádejte službu Speech o rozpoznávání zvuku.

Poznámka:

Nezaměňujte rozpoznávání s identifikací. Rozpoznávání lze použít s identifikací jazyka nebo bez jazyka.

Buď zavolejte metodu "recognize once" nebo metodu start a zastavte metody průběžného rozpoznávání. Můžete si vybrat z:

  • Poznáte jednou pomocí LID na začátku. Průběžné víko není podporováno pro rozpoznávání jednou.
  • Používejte nepřetržité rozpoznávání pomocí lid při spuštění.
  • Používejte nepřetržité rozpoznávání s průběžným víkem.

Vlastnost SpeechServiceConnection_LanguageIdMode je vyžadována pouze pro souvislé víko. Bez ní služba Speech ve výchozím nastavení používá rozhraní LID při spuštění. Podporované hodnoty jsou AtStart pro lid při spuštění nebo Continuous pro průběžné víko.

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

Použití řeči k textu

Rozpoznávání textu se používá k rozpoznávání textu, když potřebujete identifikovat jazyk ve zvukovém zdroji a pak ho přepsat na text. Další informace najdete v tématu Přehled převodu řeči na text.

Poznámka:

Rozpoznávání řeči na text s identifikací jazyka na začátku se podporuje v sadách Speech SDK v jazyce C#, C++, Python, Java, JavaScript a Objective-C. Rozpoznávání řeči na text s průběžnou identifikací jazyka se podporuje jenom u sad Speech SDK v jazyce C#, C++, Java, JavaScript a Python.

V současné době je pro rozpoznávání řeči na text s průběžnou identifikací jazyka nutné vytvořit SpeechConfig z řetězce koncového wss://{region}.stt.speech.microsoft.com/speech/universal/v2 bodu, jak je znázorněno v příkladech kódu. V budoucí verzi sady SDK ji nebudete muset nastavit.

Podívejte se na další příklady rozpoznávání řeči na text s identifikací jazyka na GitHubu.

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

Podívejte se na další příklady rozpoznávání řeči na text s identifikací jazyka na GitHubu.

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;

Podívejte se na další příklady rozpoznávání řeči na text s identifikací jazyka na GitHubu.

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

Podívejte se na další příklady rozpoznávání řeči na text s identifikací jazyka na GitHubu.

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;
},
{});

Vlastní modely převodu řeči na text

Poznámka:

Rozpoznávání jazyka s vlastními modely se dá používat pouze s převodem řeči na text a řeč v reálném čase. Dávkový přepis podporuje pouze rozpoznávání jazyka pro výchozí základní modely.

Tato ukázka ukazuje, jak používat rozpoznávání jazyka s vlastním koncovým bodem. Pokud je en-USzjištěný jazyk, použije příklad výchozí model. Pokud je fr-FRzjištěný jazyk, použije příklad koncový bod vlastního modelu. Další informace najdete v tématu Nasazení vlastního modelu řeči.

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

Tato ukázka ukazuje, jak používat rozpoznávání jazyka s vlastním koncovým bodem. Pokud je en-USzjištěný jazyk, použije příklad výchozí model. Pokud je fr-FRzjištěný jazyk, použije příklad koncový bod vlastního modelu. Další informace najdete v tématu Nasazení vlastního modelu řeči.

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

Tato ukázka ukazuje, jak používat rozpoznávání jazyka s vlastním koncovým bodem. Pokud je en-USzjištěný jazyk, použije příklad výchozí model. Pokud je fr-FRzjištěný jazyk, použije příklad koncový bod vlastního modelu. Další informace najdete v tématu Nasazení vlastního modelu řeči.

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

Tato ukázka ukazuje, jak používat rozpoznávání jazyka s vlastním koncovým bodem. Pokud je en-USzjištěný jazyk, použije příklad výchozí model. Pokud je fr-FRzjištěný jazyk, použije příklad koncový bod vlastního modelu. Další informace najdete v tématu Nasazení vlastního modelu řeči.

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

Tato ukázka ukazuje, jak používat rozpoznávání jazyka s vlastním koncovým bodem. Pokud je en-USzjištěný jazyk, použije příklad výchozí model. Pokud je fr-FRzjištěný jazyk, použije příklad koncový bod vlastního modelu. Další informace najdete v tématu Nasazení vlastního modelu řeči.

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

Spuštění překladu řeči

Překlad řeči použijte, když potřebujete identifikovat jazyk ve zvukovém zdroji a pak ho přeložit do jiného jazyka. Další informace najdete v tématu Přehled překladu řeči.

Poznámka:

Překlad řeči s identifikací jazyka se podporuje jenom u sad Speech SDK v jazyce C#, C++, JavaScript a Python. V současné době pro překlad řeči s identifikací jazyka musíte vytvořit speechConfig z řetězce koncového wss://{region}.stt.speech.microsoft.com/speech/universal/v2 bodu, jak je znázorněno v příkladech kódu. V budoucí verzi sady SDK ji nebudete muset nastavit.

Podívejte se na další příklady překladu řeči s identifikací jazyka na GitHubu.

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

Podívejte se na další příklady překladu řeči s identifikací jazyka na GitHubu.

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

Podívejte se na další příklady překladu řeči s identifikací jazyka na GitHubu.

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

Spuštění a použití kontejneru

Kontejnery služby Speech poskytují rozhraní API koncových bodů dotazů založených na websocketu, ke kterým se přistupuje prostřednictvím sady Speech SDK a rozhraní příkazového řádku služby Speech. Sada Speech SDK a Rozhraní příkazového řádku služby Speech ve výchozím nastavení používají veřejnou službu Speech. Pokud chcete kontejner použít, musíte změnit inicializační metodu. Místo klíče a oblasti použijte adresu URL hostitele kontejneru.

Při spuštění ID jazyka v kontejneru použijte SourceLanguageRecognizer objekt místo SpeechRecognizer nebo TranslationRecognizer.

Další informace o kontejnerech najdete v průvodci postupy pro kontejnery speech pro identifikaci jazyka.

Implementace dávkového přepisu řeči na text

Pokud chcete identifikovat jazyky pomocí rozhraní REST API pro přepis služby Batch, použijte languageIdentification vlastnost v textu požadavku Transcriptions_Create .

Upozorňující

Dávkový přepis podporuje pouze identifikaci jazyka pro výchozí základní modely. Pokud je v žádosti o přepis zadána identifikace jazyka i vlastní model, služba se vrátí, aby používala základní modely pro zadané kandidátské jazyky. To může vést k neočekávaným výsledkům rozpoznávání.

Pokud váš scénář převodu řeči na text vyžaduje identifikaci jazyka i vlastní modely, použijte místo dávkového přepisu řeč v reálném čase.

Následující příklad ukazuje použití languageIdentification vlastnosti se čtyřmi kandidátskými jazyky. Další informace o vlastnostech požadavku najdete v tématu Vytvoření dávkového přepisu.

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