تنفيذ تعريف اللغة

يتم استخدام تعريف اللغة لتحديد اللغات المنطوقة في الصوت عند مقارنتها بقائمة اللغات المدعومة.

تتضمن حالات استخدام تعريف اللغة (LID) ما يلي:

  • التعرف على الكلام إلى النص عندما تحتاج إلى تحديد اللغة في مصدر صوت ثم نسخها إلى نص.
  • ترجمة الكلام عندما تحتاج إلى تحديد اللغة في مصدر صوت ثم ترجمتها إلى لغة أخرى.

للتعرف على الكلام، يكون زمن الانتقال الأولي أعلى مع تحديد اللغة. يجب تضمين هذه الميزة الاختيارية فقط حسب الحاجة.

تعيين خيارات التكوين

سواء كنت تستخدم تعريف اللغة مع الكلام إلى نص أو مع ترجمة الكلام، هناك بعض المفاهيم الشائعة وخيارات التكوين.

ثم تقوم بإجراء طلب التعرف مرة واحدة أو طلب التعرف المستمر على خدمة الكلام.

هام

يتم تبسيط واجهات برمجة التطبيقات لتحديد اللغة باستخدام Speech SDK الإصدار 1.25 والإصدارات الأحدث. SpeechServiceConnection_SingleLanguageIdPriority تمت إزالة الخاصيتين وSpeechServiceConnection_ContinuousLanguageIdPriority. تحل خاصية SpeechServiceConnection_LanguageIdMode واحدة محلها. لم تعد بحاجة إلى تحديد الأولويات بين زمن الانتقال المنخفض والدقة العالية. للتعرف المستمر على الكلام أو الترجمة، تحتاج فقط إلى تحديد ما إذا كنت تريد تشغيل تعريف اللغة في البداية أو المستمر.

توفر هذه المقالة مقتطفات التعليمات البرمجية لوصف المفاهيم. يتم توفير ارتباطات إلى عينات كاملة لكل حالة استخدام.

لغات المرشح

يمكنك توفير لغات المرشح مع AutoDetectSourceLanguageConfig العنصر . تتوقع أن يكون أحد المرشحين على الأقل في الصوت. يمكنك تضمين ما يصل إلى أربع لغات ل LID في البداية أو ما يصل إلى 10 لغات ل LID المستمر. تقوم خدمة الكلام بإرجاع إحدى اللغات المرشحة المقدمة حتى إذا لم تكن هذه اللغات في الصوت. على سبيل المثال، إذا تم fr-FR توفير (الفرنسية) و en-US (الإنجليزية) كمرشحين، ولكن يتم التحدث باللغة الألمانية، فإن الخدمة ترجع إما fr-FR أو en-US.

يجب توفير الإعدادات المحلية الكاملة مع فاصل شرطة (-)، ولكن تعريف اللغة يستخدم فقط لغة واحدة لكل لغة أساسية. لا تقم بتضمين لغات متعددة لنفس اللغة، على سبيل المثال، en-US و 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];

لمزيد من المعلومات، راجع اللغات المدعومة.

تعريف اللغة في البداية والمستمر

يدعم الكلام تعريف اللغة في البداية والمستمر (LID).

إشعار

يتم دعم تعريف اللغة المستمر فقط مع Speech SDKs في C#، وC++، وJava (للكلام إلى النص فقط)، وJavaScript (للكلام إلى نص فقط)، وPython.

  • يحدد LID عند البدء اللغة مرة واحدة في غضون الثواني القليلة الأولى من الصوت. استخدم LID في البداية إذا لم تتغير اللغة في الصوت. باستخدام LID في البداية، يتم الكشف عن لغة واحدة وإرجاعها في أقل من 5 ثوان.
  • يمكن ل LID المستمر تحديد لغات متعددة أثناء الصوت. استخدم LID المستمر إذا كانت اللغة في الصوت قد تتغير. لا يدعم LID المستمر تغيير اللغات ضمن الجملة نفسها. على سبيل المثال، إذا كنت تتحدث الإسبانية بشكل أساسي وأدرجت بعض الكلمات الإنجليزية، فلن تكتشف تغيير اللغة لكل كلمة.

يمكنك تنفيذ LID في البداية أو LID المستمر عن طريق استدعاء أساليب للتعرف مرة واحدة أو مستمرة. يتم دعم LID المستمر فقط مع التعرف المستمر.

التعرف مرة واحدة أو مستمرة

يتم إكمال تعريف اللغة مع عناصر التعرف والعمليات. تقديم طلب إلى خدمة الكلام للتعرف على الصوت.

إشعار

لا تخلط بين التعرف والتعريف. يمكن استخدام التعرف مع تحديد اللغة أو دونها.

إما استدعاء أسلوب "التعرف مرة واحدة"، أو بدء أساليب التعرف المستمر وإيقافها. اختر من:

  • التعرف مرة واحدة مع LID عند البدء. LID المستمر غير مدعوم للتعرف عليه مرة واحدة.
  • استخدم التعرف المستمر مع LID في البداية.
  • استخدم التعرف المستمر مع LID المستمر.

الخاصية SpeechServiceConnection_LanguageIdMode مطلوبة فقط ل LID المستمر. بدونها، يتم تعيين خدمة Speech افتراضيا إلى LID في البداية. القيم المدعومة هي AtStart ل LID في البداية أو Continuous ل 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()

استخدام الكلام إلى نص

يمكنك استخدام التعرف على الكلام للنص عندما تحتاج إلى تحديد اللغة في مصدر صوت ثم نسخها إلى نص. لمزيد من المعلومات، راجع نظرة عامة على تحويل الكلام إلى نص.

إشعار

يتم دعم التعرف على الكلام إلى النص باستخدام تعريف اللغة في البداية مع Speech SDKs في C#، وC++، وPython، وJava، وJavaScript، و Objective-C. يتم دعم التعرف على الكلام إلى النص مع تعريف اللغة المستمر فقط مع Speech SDKs في C#، وC++، وJava، وJavaScript، وPython.

حاليا للتعرف على الكلام إلى النص مع تعريف اللغة المستمر، يجب إنشاء SpeechConfig من wss://{region}.stt.speech.microsoft.com/speech/universal/v2 سلسلة نقطة النهاية، كما هو موضح في أمثلة التعليمات البرمجية. في إصدار SDK مستقبلي، لن تحتاج إلى تعيينه.

راجع المزيد من الأمثلة على التعرف على الكلام إلى النص مع تعريف اللغة على 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;
}

راجع المزيد من الأمثلة على التعرف على الكلام إلى النص مع تعريف اللغة على 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;

راجع المزيد من الأمثلة على التعرف على الكلام إلى النص مع تعريف اللغة على 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();

راجع المزيد من الأمثلة على التعرف على الكلام إلى النص مع تعريف اللغة على 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;
},
{});

تحويل الكلام إلى نماذج مخصصة للنص

إشعار

لا يمكن استخدام الكشف عن اللغة باستخدام نماذج مخصصة إلا مع الكلام في الوقت الحقيقي إلى ترجمة النص والكلام. النسخ الدفعي يدعم فقط الكشف عن اللغة للنماذج الأساسية الافتراضية.

يوضح هذا النموذج كيفية استخدام الكشف عن اللغة مع نقطة نهاية مخصصة. إذا كانت اللغة المكتشفة هي en-US، يستخدم المثال النموذج الافتراضي. إذا كانت اللغة المكتشفة هي fr-FR، يستخدم المثال نقطة نهاية النموذج المخصص. لمزيد من المعلومات، راجع نشر نموذج كلام مخصص.

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

يوضح هذا النموذج كيفية استخدام الكشف عن اللغة مع نقطة نهاية مخصصة. إذا كانت اللغة المكتشفة هي en-US، يستخدم المثال النموذج الافتراضي. إذا كانت اللغة المكتشفة هي fr-FR، يستخدم المثال نقطة نهاية النموذج المخصص. لمزيد من المعلومات، راجع نشر نموذج كلام مخصص.

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

يوضح هذا النموذج كيفية استخدام الكشف عن اللغة مع نقطة نهاية مخصصة. إذا كانت اللغة المكتشفة هي en-US، يستخدم المثال النموذج الافتراضي. إذا كانت اللغة المكتشفة هي fr-FR، يستخدم المثال نقطة نهاية النموذج المخصص. لمزيد من المعلومات، راجع نشر نموذج كلام مخصص.

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

يوضح هذا النموذج كيفية استخدام الكشف عن اللغة مع نقطة نهاية مخصصة. إذا كانت اللغة المكتشفة هي en-US، يستخدم المثال النموذج الافتراضي. إذا كانت اللغة المكتشفة هي fr-FR، يستخدم المثال نقطة نهاية النموذج المخصص. لمزيد من المعلومات، راجع نشر نموذج كلام مخصص.

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

يوضح هذا النموذج كيفية استخدام الكشف عن اللغة مع نقطة نهاية مخصصة. إذا كانت اللغة المكتشفة هي en-US، يستخدم المثال النموذج الافتراضي. إذا كانت اللغة المكتشفة هي fr-FR، يستخدم المثال نقطة نهاية النموذج المخصص. لمزيد من المعلومات، راجع نشر نموذج كلام مخصص.

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

تشغيل ترجمة الكلام

استخدم ترجمة الكلام عندما تحتاج إلى تحديد اللغة في مصدر صوت ثم ترجمتها إلى لغة أخرى. لمزيد من المعلومات، راجع نظرة عامة على ترجمة الكلام.

إشعار

يتم دعم ترجمة الكلام مع تعريف اللغة فقط مع Speech SDKs في C#، وC++، وJavaScript، وPython. حالياً لترجمة الكلام مع تعريف اللغة، يجب إنشاء SpeechConfig من wss://{region}.stt.speech.microsoft.com/speech/universal/v2 سلسلة نقطة النهاية، كما هو موضح في أمثلة التعليمات البرمجية. في إصدار SDK مستقبلي، لن تحتاج إلى تعيينه.

راجع المزيد من الأمثلة على ترجمة الكلام مع تعريف اللغة على 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}");
            }
        }
    }
}

راجع المزيد من الأمثلة على ترجمة الكلام مع تعريف اللغة على 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;
    }
}

راجع المزيد من الأمثلة على ترجمة الكلام مع تعريف اللغة على 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))

تشغيل حاوية واستخدامها

توفر حاويات الكلام واجهات برمجة تطبيقات نقطة نهاية الاستعلام المستندة إلى websocket التي يتم الوصول إليها من خلال Speech SDK و Speech CLI. بشكل افتراضي، يستخدم Speech SDK و Speech CLI خدمة Speech العامة. لاستخدام الحاوية، تحتاج إلى تغيير أسلوب التهيئة. استخدم عنوان URL لمضيف الحاوية بدلا من المفتاح والمنطقة.

عند تشغيل معرف اللغة في حاوية، استخدم SourceLanguageRecognizer الكائن بدلا من SpeechRecognizer أو TranslationRecognizer.

لمزيد من المعلومات حول الحاويات، راجع الدليل الإرشادي لحاويات الكلام لتحديد اللغة.

تنفيذ تحويل الكلام إلى نسخ دفعة نصية

لتحديد اللغات باستخدام واجهة برمجة تطبيقات REST للنسخ الدفعي، استخدم languageIdentification الخاصية في نص طلب Transcriptions_Create.

تحذير

النسخ الدفعي يدعم فقط تعريف اللغة للنماذج الأساسية الافتراضية. إذا تم تحديد كل من تعريف اللغة ونموذج مخصص في طلب النسخ، تعود الخدمة إلى استخدام النماذج الأساسية للغات المرشحة المحددة. قد يؤدي ذلك إلى نتائج التعرف غير المتوقعة.

إذا كان سيناريو الكلام إلى نص يتطلب كلا من تعريف اللغة والنماذج المخصصة، فاستخدم الكلام في الوقت الحقيقي إلى نص بدلا من النسخ الدفعي.

يوضح المثال التالي استخدام الخاصية languageIdentification بأربع لغات مرشحة. لمزيد من المعلومات حول خصائص الطلب، راجع إنشاء نسخ دفعي.

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