التشغيل السريع: التعرف على الكلام وتحويل الكلام إلى نص

حزمة الوثائق المرجعية | (NuGet) | عينات إضافية على GitHub

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

المتطلبات الأساسية

إعداد البيئة

يتوفر Speech SDK كحزمة NuGet وينفذ .NET Standard 2.0. يمكنك تثبيت Speech SDK لاحقا في هذا الدليل، ولكن تحقق أولا من دليل تثبيت SDK لمزيد من المتطلبات.

تعيين متغيرات البيئة

يجب مصادقة التطبيق الخاص بك للوصول إلى موارد خدمات Azure الذكاء الاصطناعي. وللإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها. على سبيل المثال، بعد الحصول على مفتاح لمورد Speech، اكتبه إلى متغير بيئة جديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

تلميح

لا تقم بتضمين المفتاح مباشرة في التعليمات البرمجية الخاصة بك، ولا تنشره بشكل عام. راجع أمان خدمات Azure الذكاء الاصطناعي لمزيد من خيارات المصادقة مثل Azure Key Vault.

لتعيين متغير البيئة لمفتاح مورد Speech، افتح نافذة وحدة التحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  • لتعيين SPEECH_KEY متغير البيئة، استبدل مفتاحك بأحد مفاتيح المورد الخاص بك.
  • لتعيين SPEECH_REGION متغير البيئة، استبدل منطقتك بإحدى المناطق لموردك.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

إشعار

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

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

ترجمة الكلام من خلال استخدام ميكروفون

اتبع هذه الخطوات لإنشاء تطبيق وحدة تحكم جديد وتثبيت Speech SDK.

  1. افتح موجه أوامر حيث تريد المشروع الجديد أن يكون، وأنشئ تطبيق وحدة تحكم باستخدام واجهة سطر الأوامر في .NET. Program.cs يجب إنشاء الملف في دليل المشروع.

    dotnet new console
    
  2. قم بتثبيت Speech SDK في مشروعك الجديد باستخدام .NET CLI.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. استبدل محتويات Program.cs بالتعليمة البرمجية التالية.

    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Translation;
    
    class Program 
    {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
        static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
    
        static void OutputSpeechRecognitionResult(TranslationRecognitionResult translationRecognitionResult)
        {
            switch (translationRecognitionResult.Reason)
            {
                case ResultReason.TranslatedSpeech:
                    Console.WriteLine($"RECOGNIZED: Text={translationRecognitionResult.Text}");
                    foreach (var element in translationRecognitionResult.Translations)
                    {
                        Console.WriteLine($"TRANSLATED into '{element.Key}': {element.Value}");
                    }
                    break;
                case ResultReason.NoMatch:
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                    break;
                case ResultReason.Canceled:
                    var cancellation = CancellationDetails.FromResult(translationRecognitionResult);
                    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 set the speech resource key and region values?");
                    }
                    break;
            }
        }
    
        async static Task Main(string[] args)
        {
            var speechTranslationConfig = SpeechTranslationConfig.FromSubscription(speechKey, speechRegion);        
            speechTranslationConfig.SpeechRecognitionLanguage = "en-US";
            speechTranslationConfig.AddTargetLanguage("it");
    
            using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
            using var translationRecognizer = new TranslationRecognizer(speechTranslationConfig, audioConfig);
    
            Console.WriteLine("Speak into your microphone.");
            var translationRecognitionResult = await translationRecognizer.RecognizeOnceAsync();
            OutputSpeechRecognitionResult(translationRecognitionResult);
        }
    }
    
  4. لتغيير لغة التعرّف على الكلام، استبدل en-US بلغة الأخرى المعتمدة. حدد لغة كاملة مع فاصل شرطة (-). مثلاً، es-ES للغة الأسبانية (أسبانيا). اللغة الافتراضية هي en-US في حالة عدم تعيين لغة. للاطلاع على تفاصيل حول كيفية تحديد إحدى اللغات المتعددة التي قد تُنطق، راجع تعريف اللغة.

  5. فيما يتعلق بتغيير اللغة الهدف للترجمة، استبدل itبلغة أخرى مدعومة. مع استثناءات قليلة، يمكنك تحديد التعليمات البرمجية للغة التي تسبق فاصل الشرطة المحلية (-) فقط. على سبيل المثال، استخدم es للإسبانية (أسبانيا) بدلًا من es-ES. اللغة الافتراضية هي en في حالة عدم تعيين لغة.

شغّل تطبيق وحدة التحكم الجديد لبدء التعرّف على الكلام من ميكروفون:

dotnet run

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

Speak into your microphone.
RECOGNIZED: Text=I'm excited to try speech translation.
TRANSLATED into 'it': Sono entusiasta di provare la traduzione vocale.

الملاحظات

الآن بعد أن أكملت التشغيل السريع، إليك بعض الاعتبارات الإضافية:

  • يستخدم هذا المثال عملية RecognizeOnceAsync لكتابة العبارات المنطوقة طوال مدة تصل إلى 30 ثانية، أو حتى يتم اكتشاف صمت. للحصول على معلومات حول التعرف المستمر على الصوت الأطول، بما في ذلك المحادثات متعددة اللغات، يجب مراجعة كيفية ترجمة الكلام.
  • للتعرف على الكلام من ملف صوتي، استخدم FromWavFileInput بدلا من FromDefaultMicrophoneInput:
    using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
    
  • بالنسبة إلى الملفات الصوتية المضغوطة مثل ملفات MP4، ثبّت GStreamer واستخدم PullAudioInputStream أو PushAudioInputStream. لمزيد من المعلومات، راجع كيفية استخدام صوت الإدخال المضغوط.

تنظيف الموارد

يمكنك استخدام مدخل Azure أو واجهة سطر الأوامر (CLI) في Azure لإزالة مورد Speech الذي أنشأته.

حزمة الوثائق المرجعية | (NuGet) | عينات إضافية على GitHub

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

المتطلبات الأساسية

إعداد البيئة

يتوفر Speech SDK كحزمة NuGet وينفذ .NET Standard 2.0. يمكنك تثبيت Speech SDK لاحقا في هذا الدليل، ولكن تحقق أولا من دليل تثبيت SDK لمزيد من المتطلبات

تعيين متغيرات البيئة

يجب مصادقة التطبيق الخاص بك للوصول إلى موارد خدمات Azure الذكاء الاصطناعي. وللإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها. على سبيل المثال، بعد الحصول على مفتاح لمورد Speech، اكتبه إلى متغير بيئة جديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

تلميح

لا تقم بتضمين المفتاح مباشرة في التعليمات البرمجية الخاصة بك، ولا تنشره بشكل عام. راجع أمان خدمات Azure الذكاء الاصطناعي لمزيد من خيارات المصادقة مثل Azure Key Vault.

لتعيين متغير البيئة لمفتاح مورد Speech، افتح نافذة وحدة التحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  • لتعيين SPEECH_KEY متغير البيئة، استبدل مفتاحك بأحد مفاتيح المورد الخاص بك.
  • لتعيين SPEECH_REGION متغير البيئة، استبدل منطقتك بإحدى المناطق لموردك.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

إشعار

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

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

ترجمة الكلام من خلال استخدام ميكروفون

اتبع هذه الخطوات لإنشاء تطبيق وحدة تحكم جديد وتثبيت Speech SDK.

  1. إنشاء مشروع وحدة تحكم C++ جديد في Visual Studio Community 2022 المسمى SpeechTranslation.

  2. ثبّت Speech SDK في مشروعك الجديد باستخدام مدير حزمة NuGet.

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. استبدل محتويات SpeechTranslation.cpp بالتعليمة البرمجية التالية:

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Translation;
    
    std::string GetEnvironmentVariable(const char* name);
    
    int main()
    {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        auto speechTranslationConfig = SpeechTranslationConfig::FromSubscription(speechKey, speechRegion);
        speechTranslationConfig->SetSpeechRecognitionLanguage("en-US");
        speechTranslationConfig->AddTargetLanguage("it");
    
        auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
        auto translationRecognizer = TranslationRecognizer::FromConfig(speechTranslationConfig, audioConfig);
    
        std::cout << "Speak into your microphone.\n";
        auto result = translationRecognizer->RecognizeOnceAsync().get();
    
        if (result->Reason == ResultReason::TranslatedSpeech)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << std::endl;
            for (auto pair : result->Translations)
            {
                auto language = pair.first;
                auto translation = pair.second;
                std::cout << "Translated into '" << language << "': " << translation << std::endl;
            }
        }
        else if (result->Reason == ResultReason::NoMatch)
        {
            std::cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
        else if (result->Reason == ResultReason::Canceled)
        {
            auto cancellation = CancellationDetails::FromResult(result);
            std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error)
            {
                std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
                std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                std::cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl;
            }
        }
    }
    
    std::string GetEnvironmentVariable(const char* name)
    {
    #if defined(_MSC_VER)
        size_t requiredSize = 0;
        (void)getenv_s(&requiredSize, nullptr, 0, name);
        if (requiredSize == 0)
        {
            return "";
        }
        auto buffer = std::make_unique<char[]>(requiredSize);
        (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name);
        return buffer.get();
    #else
        auto value = getenv(name);
        return value ? value : "";
    #endif
    }
    
  4. لتغيير لغة التعرّف على الكلام، استبدل en-US بلغة الأخرى المعتمدة. حدد لغة كاملة مع فاصل شرطة (-). مثلاً، es-ES للغة الأسبانية (أسبانيا). اللغة الافتراضية هي en-US في حالة عدم تعيين لغة. للاطلاع على تفاصيل حول كيفية تحديد إحدى اللغات المتعددة التي قد تُنطق، راجع تعريف اللغة.

  5. فيما يتعلق بتغيير اللغة الهدف للترجمة، استبدل itبلغة أخرى مدعومة. مع استثناءات قليلة، يمكنك تحديد التعليمات البرمجية للغة التي تسبق فاصل الشرطة المحلية (-) فقط. على سبيل المثال، استخدم es للإسبانية (أسبانيا) بدلًا من es-ES. اللغة الافتراضية هي en في حالة عدم تعيين لغة.

قم بإنشاء وتشغيلتطبيق وحدة التحكم الجديد لبدء التعرف على الكلام من ميكروفون.

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

Speak into your microphone.
RECOGNIZED: Text=I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.

الملاحظات

الآن بعد أن أكملت التشغيل السريع، إليك بعض الاعتبارات الإضافية:

  • يستخدم هذا المثال عملية RecognizeOnceAsync لكتابة العبارات المنطوقة طوال مدة تصل إلى 30 ثانية، أو حتى يتم اكتشاف صمت. للحصول على معلومات حول التعرف المستمر على الصوت الأطول، بما في ذلك المحادثات متعددة اللغات، يجب مراجعة كيفية ترجمة الكلام.
  • للتعرف على الكلام من ملف صوتي، استخدم FromWavFileInput بدلا من FromDefaultMicrophoneInput:
    auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
    
  • بالنسبة إلى الملفات الصوتية المضغوطة مثل ملفات MP4، ثبّت GStreamer واستخدم PullAudioInputStream أو PushAudioInputStream. لمزيد من المعلومات، راجع كيفية استخدام صوت الإدخال المضغوط.

تنظيف الموارد

يمكنك استخدام مدخل Azure أو واجهة سطر الأوامر (CLI) في Azure لإزالة مورد Speech الذي أنشأته.

الوثائق المرجعية | حزمة (Go) | عينات إضافية على GitHub

لا يدعم Speech SDK for Go ترجمة الكلام. يُرجى تحديد لغة كمبيوتر أخرى أو مرجع Go والنماذج المرتبطة من بداية هذه المقالة.

وثائق مرجعية | نماذج إضافية على GitHub

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

المتطلبات الأساسية

إعداد البيئة

قبل أن تتمكن من فعل أي شيء، ستحتاج إلى تثبيت Speech SDK. تعمل العينة في هذا التشغيل السريع مع Java Runtime.

  1. قم بتثبيت Apache Maven. ثم قم بتشغيل mvn -v لتأكيد التثبيت الناجح.
  2. أنشئ ملفا جديدا pom.xml في جذر مشروعك، وانسخ ما يلي فيه:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.microsoft.cognitiveservices.speech.samples</groupId>
        <artifactId>quickstart-eclipse</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
            </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
            <groupId>com.microsoft.cognitiveservices.speech</groupId>
            <artifactId>client-sdk</artifactId>
            <version>1.37.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. تثبيت Speech SDK والتبعيات.
    mvn clean dependency:copy-dependencies
    

تعيين متغيرات البيئة

يجب مصادقة التطبيق الخاص بك للوصول إلى موارد خدمات Azure الذكاء الاصطناعي. وللإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها. على سبيل المثال، بعد الحصول على مفتاح لمورد Speech، اكتبه إلى متغير بيئة جديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

تلميح

لا تقم بتضمين المفتاح مباشرة في التعليمات البرمجية الخاصة بك، ولا تنشره بشكل عام. راجع أمان خدمات Azure الذكاء الاصطناعي لمزيد من خيارات المصادقة مثل Azure Key Vault.

لتعيين متغير البيئة لمفتاح مورد Speech، افتح نافذة وحدة التحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  • لتعيين SPEECH_KEY متغير البيئة، استبدل مفتاحك بأحد مفاتيح المورد الخاص بك.
  • لتعيين SPEECH_REGION متغير البيئة، استبدل منطقتك بإحدى المناطق لموردك.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

إشعار

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

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

ترجمة الكلام من خلال استخدام ميكروفون

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

  1. يجب إنشاء ملف جديد باسم SpeechTranslation.java في نفس دليل جذر المشروع.

  2. انسخ التعليمة البرمجية التالية في SpeechTranslation.java:

    import com.microsoft.cognitiveservices.speech.*;
    import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
    import com.microsoft.cognitiveservices.speech.translation.*;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Future;
    import java.util.Map;
    
    public class SpeechTranslation {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        private static String speechKey = System.getenv("SPEECH_KEY");
        private static String speechRegion = System.getenv("SPEECH_REGION");
    
        public static void main(String[] args) throws InterruptedException, ExecutionException {
            SpeechTranslationConfig speechTranslationConfig = SpeechTranslationConfig.fromSubscription(speechKey, speechRegion);
            speechTranslationConfig.setSpeechRecognitionLanguage("en-US");
    
            String[] toLanguages = { "it" };
            for (String language : toLanguages) {
                speechTranslationConfig.addTargetLanguage(language);
            }
    
            recognizeFromMicrophone(speechTranslationConfig);
        }
    
        public static void recognizeFromMicrophone(SpeechTranslationConfig speechTranslationConfig) throws InterruptedException, ExecutionException {
            AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput();
            TranslationRecognizer translationRecognizer = new TranslationRecognizer(speechTranslationConfig, audioConfig);
    
            System.out.println("Speak into your microphone.");
            Future<TranslationRecognitionResult> task = translationRecognizer.recognizeOnceAsync();
            TranslationRecognitionResult translationRecognitionResult = task.get();
    
            if (translationRecognitionResult.getReason() == ResultReason.TranslatedSpeech) {
                System.out.println("RECOGNIZED: Text=" + translationRecognitionResult.getText());
                for (Map.Entry<String, String> pair : translationRecognitionResult.getTranslations().entrySet()) {
                    System.out.printf("Translated into '%s': %s\n", pair.getKey(), pair.getValue());
                }
            }
            else if (translationRecognitionResult.getReason() == ResultReason.NoMatch) {
                System.out.println("NOMATCH: Speech could not be recognized.");
            }
            else if (translationRecognitionResult.getReason() == ResultReason.Canceled) {
                CancellationDetails cancellation = CancellationDetails.fromResult(translationRecognitionResult);
                System.out.println("CANCELED: Reason=" + cancellation.getReason());
    
                if (cancellation.getReason() == CancellationReason.Error) {
                    System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
                    System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
                    System.out.println("CANCELED: Did you set the speech resource key and region values?");
                }
            }
    
            System.exit(0);
        }
    }
    
  3. لتغيير لغة التعرّف على الكلام، استبدل en-US بلغة الأخرى المعتمدة. حدد لغة كاملة مع فاصل شرطة (-). مثلاً، es-ES للغة الأسبانية (أسبانيا). اللغة الافتراضية هي en-US في حالة عدم تعيين لغة. للاطلاع على تفاصيل حول كيفية تحديد إحدى اللغات المتعددة التي قد تُنطق، راجع تعريف اللغة.

  4. فيما يتعلق بتغيير اللغة الهدف للترجمة، استبدل itبلغة أخرى مدعومة. مع استثناءات قليلة، يمكنك تحديد التعليمات البرمجية للغة التي تسبق فاصل الشرطة المحلية (-) فقط. على سبيل المثال، استخدم es للإسبانية (أسبانيا) بدلًا من es-ES. اللغة الافتراضية هي en في حالة عدم تعيين لغة.

شغّل تطبيق وحدة التحكم الجديد لبدء التعرّف على الكلام من ميكروفون:

javac SpeechTranslation.java -cp ".;target\dependency\*"
java -cp ".;target\dependency\*" SpeechTranslation

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

Speak into your microphone.
RECOGNIZED: Text=I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.

الملاحظات

الآن بعد أن أكملت التشغيل السريع، إليك بعض الاعتبارات الإضافية:

  • يستخدم هذا المثال عملية RecognizeOnceAsync لكتابة العبارات المنطوقة طوال مدة تصل إلى 30 ثانية، أو حتى يتم اكتشاف صمت. للحصول على معلومات حول التعرف المستمر على الصوت الأطول، بما في ذلك المحادثات متعددة اللغات، يجب مراجعة كيفية ترجمة الكلام.
  • للتعرف على الكلام من ملف صوتي، استخدم fromWavFileInput بدلا من fromDefaultMicrophoneInput:
    AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
    
  • بالنسبة إلى الملفات الصوتية المضغوطة مثل ملفات MP4، ثبّت GStreamer واستخدم PullAudioInputStream أو PushAudioInputStream. لمزيد من المعلومات، راجع كيفية استخدام صوت الإدخال المضغوط.

تنظيف الموارد

يمكنك استخدام مدخل Azure أو واجهة سطر الأوامر (CLI) في Azure لإزالة مورد Speech الذي أنشأته.

حزمة | الوثائق المرجعية (npm) | عينات إضافية على GitHub | التعليمة البرمجية لمصدر المكتبة

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

المتطلبات الأساسية

إعداد البيئة

قبل أن تتمكن من فعل أي شيء، تحتاج إلى تثبيت Speech SDK لـ JavaScript. إذا كنت تريد فقط تثبيت اسم الحزمة، فقم بتشغيل npm install microsoft-cognitiveservices-speech-sdk . للحصول على إرشادات التثبيت، راجع دليل تثبيت عدة تطوير البرامج.

تعيين متغيرات البيئة

يجب مصادقة التطبيق الخاص بك للوصول إلى موارد خدمات Azure الذكاء الاصطناعي. وللإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها. على سبيل المثال، بعد الحصول على مفتاح لمورد Speech، اكتبه إلى متغير بيئة جديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

تلميح

لا تقم بتضمين المفتاح مباشرة في التعليمات البرمجية الخاصة بك، ولا تنشره بشكل عام. راجع أمان خدمات Azure الذكاء الاصطناعي لمزيد من خيارات المصادقة مثل Azure Key Vault.

لتعيين متغير البيئة لمفتاح مورد Speech، افتح نافذة وحدة التحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  • لتعيين SPEECH_KEY متغير البيئة، استبدل مفتاحك بأحد مفاتيح المورد الخاص بك.
  • لتعيين SPEECH_REGION متغير البيئة، استبدل منطقتك بإحدى المناطق لموردك.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

إشعار

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

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

نقل الكلام من ملف

اتبع هذه الخطوات لإنشاء تطبيق وحدة تحكم Node.js للتعرّف على الكلام.

  1. أفتح موجه الأوامر حيث تريد المشروع الجديد، وأنشئ ملفاً جديداً باسمه SpeechTranslation.js.

  2. تثبيت Speech SDK لـ JavaScript:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. انسخ التعليمة البرمجية التالية في SpeechTranslation.js:

    const fs = require("fs");
    const sdk = require("microsoft-cognitiveservices-speech-sdk");
    
    // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
    const speechTranslationConfig = sdk.SpeechTranslationConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION);
    speechTranslationConfig.speechRecognitionLanguage = "en-US";
    
    var language = "it";
    speechTranslationConfig.addTargetLanguage(language);
    
    function fromFile() {
        let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync("YourAudioFile.wav"));
        let translationRecognizer = new sdk.TranslationRecognizer(speechTranslationConfig, audioConfig);
    
        translationRecognizer.recognizeOnceAsync(result => {
            switch (result.reason) {
                case sdk.ResultReason.TranslatedSpeech:
                    console.log(`RECOGNIZED: Text=${result.text}`);
                    console.log("Translated into [" + language + "]: " + result.translations.get(language));
    
                    break;
                case sdk.ResultReason.NoMatch:
                    console.log("NOMATCH: Speech could not be recognized.");
                    break;
                case sdk.ResultReason.Canceled:
                    const cancellation = sdk.CancellationDetails.fromResult(result);
                    console.log(`CANCELED: Reason=${cancellation.reason}`);
    
                    if (cancellation.reason == sdk.CancellationReason.Error) {
                        console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);
                        console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`);
                        console.log("CANCELED: Did you set the speech resource key and region values?");
                    }
                    break;
            }
            translationRecognizer.close();
        });
    }
    fromFile();
    
  4. في SpeechTranslation.js، استبدل YourAudioFile.wav بملف WAV الخاص بك. في هذا المثال، يتم التعرّف على الكلام من ملف WAV فحسب. للحصول على معلومات حول تنسيقات الصوت الأخرى، راجع كيفية استخدام مقطع إدخال صوتي مضغوط. في هذا المثال، يتم دعم مقطع صوتي مدته إلى 30 ثانية بحد أقصى.

  5. لتغيير لغة التعرّف على الكلام، استبدل en-US بلغة الأخرى المعتمدة. حدد لغة كاملة مع فاصل شرطة (-). مثلاً، es-ES للغة الأسبانية (أسبانيا). اللغة الافتراضية هي en-US في حالة عدم تعيين لغة. للاطلاع على تفاصيل حول كيفية تحديد إحدى اللغات المتعددة التي قد تُنطق، راجع تعريف اللغة.

  6. فيما يتعلق بتغيير اللغة الهدف للترجمة، استبدل itبلغة أخرى مدعومة. مع استثناءات قليلة، يمكنك تحديد التعليمات البرمجية للغة التي تسبق فاصل الشرطة المحلية (-) فقط. على سبيل المثال، استخدم es للإسبانية (أسبانيا) بدلًا من es-ES. اللغة الافتراضية هي en في حالة عدم تعيين لغة.

ينبغي تشغيل تطبيق وحدة التحكم الجديد لبدء التعرف على الكلام من خلال استخدام ميكروفون:

node.exe SpeechTranslation.js

ينبغي إخراج الكلام من الملف الصوتي كنص مترجم باللغة الهدف:

RECOGNIZED: Text=I'm excited to try speech translation.
Translated into [it]: Sono entusiasta di provare la traduzione vocale.

الملاحظات

الآن بعد أن أكملت التشغيل السريع، إليك بعض الاعتبارات الإضافية:

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

إشعار

التعرّف على الكلام من ميكروفون غير مدعوم في Node.js. بل مدعوم في بيئة JavaScript المستندة إلى المستعرض فحسب.

تنظيف الموارد

يمكنك استخدام مدخل Azure أو واجهة سطر الأوامر (CLI) في Azure لإزالة مورد Speech الذي أنشأته.

الوثائق المرجعية | حزمة (التنزيل) | نماذج إضافية على GitHub

يدعم Speech SDK for Objective-C ترجمة الكلام، لكننا لم نقم بتضمين دليل هنا بعد. يرجى تحديد لغة برمجة أخرى للبدء والتعرف على المفاهيم، أو الاطلاع على مرجع Objective-C والعينات المرتبطة من بداية هذه المقالة.

الوثائق المرجعية | حزمة (التنزيل) | نماذج إضافية على GitHub

يدعم Speech SDK for Swift ترجمة الكلام، لكننا لم نقم بتضمين دليل هنا بعد. يرجى تحديد لغة برمجة أخرى للبدء والتعرف على المفاهيم، أو الاطلاع على مرجع Swift والعينات المرتبطة من بداية هذه المقالة.

حزمة الوثائق المرجعية | (PyPi) | عينات إضافية على GitHub

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

المتطلبات الأساسية

إعداد البيئة

يتوفر Speech SDK لـ Python كـ وحدة نمطية لفهرس حزمة Python (PyPI). يتوافق Speech SDK لـ Python مع أنظمة التشغيل Windows وLinux وmacOS.

تثبيت إصدار من Python من 3.7 أو أحدث. تحقق أولاً من دليل تثبيت SDK لمزيد من المتطلبات

تعيين متغيرات البيئة

يجب مصادقة التطبيق الخاص بك للوصول إلى موارد خدمات Azure الذكاء الاصطناعي. وللإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها. على سبيل المثال، بعد الحصول على مفتاح لمورد Speech، اكتبه إلى متغير بيئة جديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

تلميح

لا تقم بتضمين المفتاح مباشرة في التعليمات البرمجية الخاصة بك، ولا تنشره بشكل عام. راجع أمان خدمات Azure الذكاء الاصطناعي لمزيد من خيارات المصادقة مثل Azure Key Vault.

لتعيين متغير البيئة لمفتاح مورد Speech، افتح نافذة وحدة التحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  • لتعيين SPEECH_KEY متغير البيئة، استبدل مفتاحك بأحد مفاتيح المورد الخاص بك.
  • لتعيين SPEECH_REGION متغير البيئة، استبدل منطقتك بإحدى المناطق لموردك.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

إشعار

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

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

ترجمة الكلام من خلال استخدام ميكروفون

اتبع هذه الخطوات لإنشاء تطبيق وحدة تحكم جديد.

  1. أفتح موجه الأوامر حيث تريد المشروع الجديد، وأنشئ ملفاً جديداً باسمه speech_translation.py.

  2. شغّل هذا الأمر لتثبيت Speech SDK:

    pip install azure-cognitiveservices-speech
    
  3. انسخ التعليمة البرمجية التالية في speech_translation.py:

    import os
    import azure.cognitiveservices.speech as speechsdk
    
    def recognize_from_microphone():
        # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        speech_translation_config = speechsdk.translation.SpeechTranslationConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
        speech_translation_config.speech_recognition_language="en-US"
    
        target_language="it"
        speech_translation_config.add_target_language(target_language)
    
        audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True)
        translation_recognizer = speechsdk.translation.TranslationRecognizer(translation_config=speech_translation_config, audio_config=audio_config)
    
        print("Speak into your microphone.")
        translation_recognition_result = translation_recognizer.recognize_once_async().get()
    
        if translation_recognition_result.reason == speechsdk.ResultReason.TranslatedSpeech:
            print("Recognized: {}".format(translation_recognition_result.text))
            print("""Translated into '{}': {}""".format(
                target_language, 
                translation_recognition_result.translations[target_language]))
        elif translation_recognition_result.reason == speechsdk.ResultReason.NoMatch:
            print("No speech could be recognized: {}".format(translation_recognition_result.no_match_details))
        elif translation_recognition_result.reason == speechsdk.ResultReason.Canceled:
            cancellation_details = translation_recognition_result.cancellation_details
            print("Speech Recognition canceled: {}".format(cancellation_details.reason))
            if cancellation_details.reason == speechsdk.CancellationReason.Error:
                print("Error details: {}".format(cancellation_details.error_details))
                print("Did you set the speech resource key and region values?")
    
    recognize_from_microphone()
    
  4. لتغيير لغة التعرّف على الكلام، استبدل en-US بلغة الأخرى المعتمدة. حدد لغة كاملة مع فاصل شرطة (-). مثلاً، es-ES للغة الأسبانية (أسبانيا). اللغة الافتراضية هي en-US في حالة عدم تعيين لغة. للاطلاع على تفاصيل حول كيفية تحديد إحدى اللغات المتعددة التي قد تُنطق، راجع تعريف اللغة.

  5. فيما يتعلق بتغيير اللغة الهدف للترجمة، استبدل itبلغة أخرى مدعومة. مع استثناءات قليلة، يمكنك تحديد التعليمات البرمجية للغة التي تسبق فاصل الشرطة المحلية (-) فقط. على سبيل المثال، استخدم es للإسبانية (أسبانيا) بدلًا من es-ES. اللغة الافتراضية هي en في حالة عدم تعيين لغة.

شغّل تطبيق وحدة التحكم الجديد لبدء التعرّف على الكلام من ميكروفون:

python speech_translation.py

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

Speak into your microphone.
Recognized: I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.

الملاحظات

الآن بعد أن أكملت التشغيل السريع، إليك بعض الاعتبارات الإضافية:

  • يستخدم هذا المثال عملية recognize_once_async لكتابة العبارات المنطوقة طوال مدة تصل إلى 30 ثانية، أو حتى يتم اكتشاف صمت. للحصول على معلومات حول التعرف المستمر على الصوت الأطول، بما في ذلك المحادثات متعددة اللغات، يجب مراجعة كيفية ترجمة الكلام.
  • للتعرف على الكلام من ملف صوتي، استخدم filename بدلا من use_default_microphone:
    audio_config = speechsdk.audio.AudioConfig(filename="YourAudioFile.wav")
    
  • بالنسبة إلى الملفات الصوتية المضغوطة مثل ملفات MP4، ثبّت GStreamer واستخدم PullAudioInputStream أو PushAudioInputStream. لمزيد من المعلومات، راجع كيفية استخدام صوت الإدخال المضغوط.

تنظيف الموارد

يمكنك استخدام مدخل Azure أو واجهة سطر الأوامر (CLI) في Azure لإزالة مورد Speech الذي أنشأته.

يشير | Speech to text REST API إلى Speech to text REST API for short audio reference | Additional Samples on GitHub

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

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

المتطلبات الأساسية

إعداد البيئة

اتبع هذه الخطوات وشاهد التشغيل السريع ل Speech CLI لمعرفة المتطلبات الأخرى للنظام الأساسي الخاص بك.

  1. قم بتشغيل الأمر .NET CLI التالي لتثبيت Speech CLI:

    dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
    
  2. قم بتشغيل الأوامر التالية لتكوين مفتاح مورد الكلام والمنطقة. استبدل SUBSCRIPTION-KEY بمفتاح مورد Speech واستبدل REGION بمنطقة مورد Speech.

    spx config @key --set SUBSCRIPTION-KEY
    spx config @region --set REGION
    

ترجمة الكلام من خلال استخدام ميكروفون

شغل الأمر التالي لترجمة الكلام باستخدام الميكروفون من الإنجليزية إلى الإيطالية:

spx translate --source en-US --target it --microphone

تحدث في الميكروفون، وترى نسخ الكلام المترجم في الوقت الحقيقي. يتوقف Speech CLI بعد فترة من الصمت لمدة 30 ثانية أو عند الضغط على Ctrl + C.

Connection CONNECTED...
TRANSLATING into 'it': Sono (from 'I'm')
TRANSLATING into 'it': Sono entusiasta (from 'I'm excited to')
TRANSLATING into 'it': Sono entusiasta di provare la parola (from 'I'm excited to try speech')
TRANSLATED into 'it': Sono entusiasta di provare la traduzione vocale. (from 'I'm excited to try speech translation.')

الملاحظات

الآن بعد أن أكملت التشغيل السريع، إليك بعض الاعتبارات الإضافية:

  • للتعرف على الكلام من ملف صوتي، يجب استخدام--file بدلا من --microphone: بالنسبة للملفات الصوتية المضغوطة مثل MP4، ركب GStreamer واستخدم --format. لمزيد من المعلومات، راجع كيفية استخدام صوت الإدخال المضغوط.
    spx translate --source en-US --target it --file YourAudioFile.wav
    spx translate --source en-US --target it --file YourAudioFile.mp4 --format any
    
  • لتحسين دقة التعرف على كلمات أو كلمات معينة، يجب استخدامقائمة عبارات. يُصبح بإمكانك تضمين قائمة عبارات في سطر أو مع ملف نصي:
    spx translate --source en-US --target it --microphone --phrases "Contoso;Jessie;Rehaan;"
    spx translate --source en-US --target it --microphone --phrases @phrases.txt
    
  • لتغيير لغة التعرّف على الكلام، استبدل en-US بلغة الأخرى المعتمدة. حدد لغة كاملة مع فاصل شرطة (-). مثلاً، es-ES للغة الأسبانية (أسبانيا). اللغة الافتراضية هي en-US في حالة عدم تعيين لغة.
    spx translate --microphone --source es-ES
    
  • فيما يتعلق بتغيير اللغة الهدف للترجمة، استبدل itبلغة أخرى مدعومة. مع استثناءات قليلة، يمكنك تحديد التعليمات البرمجية للغة التي تسبق فاصل الشرطة المحلية (-) فقط. على سبيل المثال، استخدم es للإسبانية (أسبانيا) بدلًا من es-ES. اللغة الافتراضية هي en في حالة عدم تعيين لغة.
    spx translate --microphone --target es
    
  • للتعرف المستمر على الصوت الذي يزيد عن 30 ثانية، قم بإلحاق --continuous:
    spx translate --source en-US --target it --microphone --continuous
    

يجب تشغيل هذا الأمر للحصول على معلومات حول خيارات ترجمة الكلام الإضافية مثل إدخال الملف والإخراج:

spx help translate

تنظيف الموارد

يمكنك استخدام مدخل Azure أو واجهة سطر الأوامر (CLI) في Azure لإزالة مورد Speech الذي أنشأته.

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