تحديد اللغة (معاينة)

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

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

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

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

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

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

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

لغات المرشحين

أنت توفر لغات مرشحة، ومن المتوقع أن تكون واحدة منها على الأقل في الصوت. يمكنك تضمين ما يصل إلى 4 لغات ل LID عند البدء أو ما يصل إلى 10 لغات ل LID المستمر.

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

ملاحظة

يتم دعم تعريف اللغة المستمر فقط مع مجموعات SDK للكلام في C # و C ++ و Python.

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

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

تحديد أولويات الدقة والكمون

يمكنك اختيار تحديد أولويات الدقة أو زمن الوصول باستخدام تحديد اللغة.

ملاحظة

يتم تحديد أولويات زمن الوصول بشكل افتراضي باستخدام Speech SDK. يمكنك اختيار تحديد أولويات الدقة أو زمن الوصول باستخدام مجموعات SDK للكلام ل C # و C ++ و Python. حدد الأولويات Latency إذا كنت بحاجة إلى نتيجة منخفضة الكمون مثل أثناء البث المباشر. اضبط الأولوية على ما Accuracy إذا كانت جودة الصوت رديئة ، وكان المزيد من الكمون مقبولا. على سبيل المثال ، يمكن أن يحتوي البريد الصوتي على ضوضاء في الخلفية ، أو بعض الصمت في البداية. سيؤدي السماح للمحرك بمزيد من الوقت إلى تحسين نتائج تحديد اللغة.

  • في البداية: مع وضع LID Latency عند البدء ، يتم إرجاع النتيجة في أقل من 5 ثوان. مع وضع LID عند البدء ، Accuracy يتم إرجاع النتيجة في غضون 30 ثانية. يمكنك تعيين الأولوية ل LID عند البدء مع الخاصية SpeechServiceConnection_SingleLanguageIdPriority .
  • مستمر: مع LID المستمر في Latency الوضع ، يتم إرجاع النتائج كل 2 ثانية طوال مدة الصوت. مع LID المستمر في Accuracy الوضع ، يتم إرجاع النتائج ضمن أي إطار زمني محدد طوال مدة الصوت. يمكنك تعيين الأولوية ل LID المستمر مع SpeechServiceConnection_ContinuousLanguageIdPriority الخاصية.

هام

مع التعرف المستمر على تحويل الكلام إلى نصوترجمة الكلام ، لا يتم تعيينها Accuracyباستخدام الخاصية SpeechServiceConnection_ContinuousLanguageIdPriority. سيتم تجاهل الإعداد دون خطأ ، وستظل الأولوية الافتراضية سارية المفعول Latency . يدعم تعريف اللغة المستقل فقط LID المستمر مع Accuracy تحديد الأولويات.
يستخدم الكلام LID عند البدء مع Latency تحديد الأولويات بشكل افتراضي. تحتاج إلى تعيين خاصية أولوية لأي تكوين LID آخر.

فيما يلي مثال على استخدام LID المستمر مع الاستمرار في تحديد أولويات الكمون.

speechConfig.SetProperty(PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");

فيما يلي مثال على استخدام LID المستمر مع الاستمرار في تحديد أولويات الكمون.

speechConfig->SetProperty(PropertyId::SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");

فيما يلي مثال على استخدام LID المستمر مع الاستمرار في تحديد أولويات الكمون.

speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, value='Latency')

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

ملاحظة

قد تشاهد حالات يتم فيها إرجاع سلسلة فارغة بدلا من Unknown، بسبب عدم تناسق خدمة الكلام. أثناء وجود هذه الملاحظة ، يجب على التطبيقات التحقق من كل من حالة السلسلة الفارغة Unknown ومعالجتها بشكل متطابق.

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

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

ملاحظة

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

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

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

// Recognize once with At-start LID
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_ContinuousLanguageIdPriority, "Latency");
await recognizer.StartContinuousRecognitionAsync();
await recognizer.StopContinuousRecognitionAsync();
// Recognize once with At-start LID
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_ContinuousLanguageIdPriority, "Latency");
recognizer->StartContinuousRecognitionAsync().get();
recognizer->StopContinuousRecognitionAsync().get();
# Recognize once with At-start LID
result = recognizer.recognize_once()

# Start and stop continuous recognition with At-start LID
source_language_recognizer.start_continuous_recognition()
source_language_recognizer.stop_continuous_recognition()

# Start and stop continuous recognition with Continuous LID
speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, value='Latency')
source_language_recognizer.start_continuous_recognition()
source_language_recognizer.stop_continuous_recognition()

تعريف اللغة المستقلة

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

ملاحظة

يتم دعم تعريف لغة المصدر المستقلة فقط مع مجموعات SDK للكلام ل C # و C ++ و Python.

اطلع على المزيد من الأمثلة على تحديد اللغة المستقلة على GitHub.

// Creates an instance of a speech config with specified subscription key and service region.
// Replace with your own subscription key and service region (e.g., "westus").
var config = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

// Single-Shot with Accuracy
// Please refer to the documentation of language id with different modes
config.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Accuracy");

// Creates a speech recognizer using file as audio input.
// Replace with your own audio file name.
using (var audioInput = AudioConfig.FromWavFileInput(@"LanguageDetection_enUS.wav"))
{
    using (var recognizer = new SourceLanguageRecognizer(config, autoDetectSourceLanguageConfig, audioInput))
    {
        // Starts recognizing.
        Console.WriteLine("Say something...");

        // Starts language detection, and returns after a single utterance is recognized.
        // The task returns the recognition text as result.
        // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
        // shot detection like command or query.
        // For long-running multi-utterance detection, use StartContinuousRecognitionAsync() instead.
        var result = await recognizer.RecognizeOnceAsync().ConfigureAwait(false);

        // Checks result.
        if (result.Reason == ResultReason.RecognizedSpeech)
        {
            var lidResult = AutoDetectSourceLanguageResult.FromResult(result);
            Console.WriteLine($"DETECTED: Language={lidResult.Language}");
        }
        else if (result.Reason == ResultReason.NoMatch)
        {

            Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        }
        else if (result.Reason == ResultReason.Canceled)
        {
            var cancellation = CancellationDetails.FromResult(result);
            Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

            if (cancellation.Reason == CancellationReason.Error)
            {
                Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
                Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
                Console.WriteLine($"CANCELED: Did you update the subscription info?");
            }
        }
    }
}

اطلع على المزيد من الأمثلة على تحديد اللغة المستقلة على GitHub.

// Creates an instance of a speech config with specified subscription key and service region.
// Replace with your own subscription key and service region (e.g., "westus").
auto config = SpeechConfig::FromSubscription("YourSubscriptionKey", "YourServiceRegion");

// Language Id feature requirement
// Please refer to language id document for different modes
config->SetProperty(PropertyId::SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
auto autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE" });

// Creates a speech recognizer using microphone as audio input. The default language is "en-us".
auto recognizer = SourceLanguageRecognizer::FromConfig(config, autoDetectSourceLanguageConfig);
cout << "Say something...\n";

// Starts Standalone language detection, 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 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::RecognizedSpeech)
{
    auto lidResult = AutoDetectSourceLanguageResult::FromResult(result);
    cout << "RECOGNIZED in "<< lidResult->Language << 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 update the subscription info?" << std::endl;
    }
}

اطلع على المزيد من الأمثلة على تحديد اللغة المستقلة على GitHub.

# Creates an AutoDetectSourceLanguageConfig, which defines a number of possible spoken languages
auto_detect_source_language_config = speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["de-DE", "en-US"])

# Creates a SpeechConfig from your speech key and region
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)

# Sets the Priority (optional, defaults to 'Latency'). Either 'Latency' or 'Accuracy' is accepted.
speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, value='Latency')

audio_config = speechsdk.audio.AudioConfig(filename=single_language_wav_file)
# Creates a source language recognizer using a file as audio input, also specify the speech language
source_language_recognizer = speechsdk.SourceLanguageRecognizer(
    speech_config=speech_config, auto_detect_source_language_config=auto_detect_source_language_config, audio_config=audio_config)

# Starts speech language detection, 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. It returns the detection text as result.
# Note: Since recognize_once() returns only a single utterance, it is suitable only for single
# shot detection like command or query.
# For long-running multi-utterance detection, use start_continuous_recognition() instead.
result = source_language_recognizer.recognize_once()

# Check the result
if result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("RECOGNIZED: {}".format(result))
    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:
    cancellation_details = result.cancellation_details
    print("Speech Language Detection canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(cancellation_details.error_details))

تحويل الكلام إلى نص

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

ملاحظة

يتم دعم التعرف على تحويل الكلام إلى نص مع تحديد اللغة عند البدء باستخدام مجموعات تطوير البرامج (SDK) الخاصة بالكلام في C# وC ++ وPython وJava وJavaScript وObjective-C. يتم دعم التعرف على تحويل الكلام إلى نص مع تحديد اللغة المستمر فقط مع مجموعات تطوير البرامج الخاصة بالكلام في C # و C ++ و 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");

speechConfig.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Latency");

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");
speechConfig->SetProperty(PropertyId::SpeechServiceConnection_SingleLanguageIdPriority, "Latency");

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

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

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

ترجمة الكلام

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

ملاحظة

يتم دعم ترجمة الكلام مع تحديد اللغة فقط مع مجموعات SDK للكلام في C # و C ++ و 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");

    speechTranslationConfig.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Latency");

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

// Language Id feature requirement
// Please refer to language id document for different modes
config->SetProperty(PropertyId::SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
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)

# Set the Priority (optional, default Latency, either Latency or Accuracy is accepted)
translation_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, value='Accuracy')

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

الخطوات التالية