التشغيل السريع: إنشاء يوميات في الوقت الحقيقي

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

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

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

تلميح

يمكنك تجربة الكلام في الوقت الحقيقي إلى نص في Speech Studio دون الاشتراك أو كتابة أي تعليمة برمجية. ومع ذلك، لا يدعم Speech Studio حتى الآن اليوميات.

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

إعداد البيئة

يتوفر 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 CLI.

    dotnet new console
    

    ينشئ هذا الأمر ملف Program.cs في دليل المشروع.

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

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

    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Transcription;
    
    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");
    
        async static Task Main(string[] args)
        {
            var filepath = "katiesteve.wav";
            var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);        
            speechConfig.SpeechRecognitionLanguage = "en-US";
    
            var stopRecognition = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
    
            // Create an audio stream from a wav file or from the default microphone
            using (var audioConfig = AudioConfig.FromWavFileInput(filepath))
            {
                // Create a conversation transcriber using audio stream input
                using (var conversationTranscriber = new ConversationTranscriber(speechConfig, audioConfig))
                {
                    conversationTranscriber.Transcribing += (s, e) =>
                    {
                        Console.WriteLine($"TRANSCRIBING: Text={e.Result.Text}");
                    };
    
                    conversationTranscriber.Transcribed += (s, e) =>
                    {
                        if (e.Result.Reason == ResultReason.RecognizedSpeech)
                        {
                            Console.WriteLine($"TRANSCRIBED: Text={e.Result.Text} Speaker ID={e.Result.SpeakerId}");
                        }
                        else if (e.Result.Reason == ResultReason.NoMatch)
                        {
                            Console.WriteLine($"NOMATCH: Speech could not be transcribed.");
                        }
                    };
    
                    conversationTranscriber.Canceled += (s, e) =>
                    {
                        Console.WriteLine($"CANCELED: Reason={e.Reason}");
    
                        if (e.Reason == CancellationReason.Error)
                        {
                            Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
                            Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
                            Console.WriteLine($"CANCELED: Did you set the speech resource key and region values?");
                            stopRecognition.TrySetResult(0);
                        }
    
                        stopRecognition.TrySetResult(0);
                    };
    
                    conversationTranscriber.SessionStopped += (s, e) =>
                    {
                        Console.WriteLine("\n    Session stopped event.");
                        stopRecognition.TrySetResult(0);
                    };
    
                    await conversationTranscriber.StartTranscribingAsync();
    
                    // Waits for completion. Use Task.WaitAny to keep the task rooted.
                    Task.WaitAny(new[] { stopRecognition.Task });
    
                    await conversationTranscriber.StopTranscribingAsync();
                }
            }
        }
    }
    
  4. احصل على نموذج ملف الصوت أو استخدم الملف الخاص .wav بك. استبدل katiesteve.wav بمسار الملف واسمه .wav .

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

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

  6. تشغيل تطبيق وحدة التحكم لبدء كتابة المحادثة:

    dotnet run
    

هام

تأكد من تعيين متغيري البيئة و SPEECH_REGION .SPEECH_KEY إذا لم تقم بتعيين هذه المتغيرات، تفشل العينة مع ظهور رسالة خطأ.

يجب أن يتم إخراج المحادثة المنسوخة كنص:

TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream

يتم تحديد المتحدثين على أنهم Guest-1 و Guest-2 وما إلى ذلك، اعتمادا على عدد السماعات في المحادثة.

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

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

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

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

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

تلميح

يمكنك تجربة الكلام في الوقت الحقيقي إلى نص في Speech Studio دون الاشتراك أو كتابة أي تعليمة برمجية. ومع ذلك، لا يدعم Speech Studio حتى الآن اليوميات.

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

إعداد البيئة

يتوفر 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 المسمى ConversationTranscription.

  2. حدد Tools>Nuget مدير الحِزَم> مدير الحِزَم Console. في وحدة تحكم مدير الحِزَم، قم بتشغيل هذا الأمر:

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

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    #include <future>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Transcription;
    
    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");
    
        if ((size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set both SPEECH_KEY and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
    
        speechConfig->SetSpeechRecognitionLanguage("en-US");
    
        auto audioConfig = AudioConfig::FromWavFileInput("katiesteve.wav");
        auto conversationTranscriber = ConversationTranscriber::FromConfig(speechConfig, audioConfig);
    
        // promise for synchronization of recognition end.
        std::promise<void> recognitionEnd;
    
        // Subscribes to events.
        conversationTranscriber->Transcribing.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                std::cout << "TRANSCRIBING:" << e.Result->Text << std::endl;
            });
    
        conversationTranscriber->Transcribed.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                if (e.Result->Reason == ResultReason::RecognizedSpeech)
                {
                    std::cout << "TRANSCRIBED: Text=" << e.Result->Text << std::endl;
                    std::cout << "Speaker ID=" << e.Result->SpeakerId << std::endl;
                }
                else if (e.Result->Reason == ResultReason::NoMatch)
                {
                    std::cout << "NOMATCH: Speech could not be transcribed." << std::endl;
                }
            });
    
        conversationTranscriber->Canceled.Connect([&recognitionEnd](const ConversationTranscriptionCanceledEventArgs& e)
            {
                auto cancellation = CancellationDetails::FromResult(e.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;
                }
                else if (cancellation->Reason == CancellationReason::EndOfStream)
                {
                    std::cout << "CANCELED: Reach the end of the file." << std::endl;
                }
            });
    
        conversationTranscriber->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
            {
                std::cout << "Session stopped.";
                recognitionEnd.set_value(); // Notify to stop recognition.
            });
    
        conversationTranscriber->StartTranscribingAsync().wait();
    
        // Waits for recognition end.
        recognitionEnd.get_future().wait();
    
        conversationTranscriber->StopTranscribingAsync().wait();
    }
    
    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. احصل على نموذج ملف الصوت أو استخدم الملف الخاص .wav بك. استبدل katiesteve.wav بمسار الملف واسمه .wav .

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

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

  6. بناء وتشغيل التطبيق الخاص بك لبدء كتابة المحادثة:

    هام

    تأكد من تعيين متغيري البيئة و SPEECH_REGION .SPEECH_KEY إذا لم تقم بتعيين هذه المتغيرات، تفشل العينة مع ظهور رسالة خطأ.

يجب أن يتم إخراج المحادثة المنسوخة كنص:

TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2 
CANCELED: Reason=EndOfStream

يتم تحديد المتحدثين على أنهم Guest-1 و Guest-2 وما إلى ذلك، اعتمادا على عدد السماعات في المحادثة.

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

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

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

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

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

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

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

تلميح

يمكنك تجربة الكلام في الوقت الحقيقي إلى نص في Speech Studio دون الاشتراك أو كتابة أي تعليمة برمجية. ومع ذلك، لا يدعم Speech Studio حتى الآن اليوميات.

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

إعداد البيئة

لإعداد بيئتك، قم بتثبيت 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.38.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. يجب إنشاء ملف جديد باسم ConversationTranscription.java في نفس دليل جذر المشروع.

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

    import com.microsoft.cognitiveservices.speech.*;
    import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
    import com.microsoft.cognitiveservices.speech.transcription.*;
    
    import java.util.concurrent.Semaphore;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Future;
    
    public class ConversationTranscription {
        // 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 {
    
            SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion);
            speechConfig.setSpeechRecognitionLanguage("en-US");
            AudioConfig audioInput = AudioConfig.fromWavFileInput("katiesteve.wav");
    
            Semaphore stopRecognitionSemaphore = new Semaphore(0);
    
            ConversationTranscriber conversationTranscriber = new ConversationTranscriber(speechConfig, audioInput);
            {
                // Subscribes to events.
                conversationTranscriber.transcribing.addEventListener((s, e) -> {
                    System.out.println("TRANSCRIBING: Text=" + e.getResult().getText());
                });
    
                conversationTranscriber.transcribed.addEventListener((s, e) -> {
                    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
                        System.out.println("TRANSCRIBED: Text=" + e.getResult().getText() + " Speaker ID=" + e.getResult().getSpeakerId() );
                    }
                    else if (e.getResult().getReason() == ResultReason.NoMatch) {
                        System.out.println("NOMATCH: Speech could not be transcribed.");
                    }
                });
    
                conversationTranscriber.canceled.addEventListener((s, e) -> {
                    System.out.println("CANCELED: Reason=" + e.getReason());
    
                    if (e.getReason() == CancellationReason.Error) {
                        System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
                        System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
                        System.out.println("CANCELED: Did you update the subscription info?");
                    }
    
                    stopRecognitionSemaphore.release();
                });
    
                conversationTranscriber.sessionStarted.addEventListener((s, e) -> {
                    System.out.println("\n    Session started event.");
                });
    
                conversationTranscriber.sessionStopped.addEventListener((s, e) -> {
                    System.out.println("\n    Session stopped event.");
                });
    
                conversationTranscriber.startTranscribingAsync().get();
    
                // Waits for completion.
                stopRecognitionSemaphore.acquire();
    
                conversationTranscriber.stopTranscribingAsync().get();
            }
    
            speechConfig.close();
            audioInput.close();
            conversationTranscriber.close();
    
            System.exit(0);
        }
    }
    
  3. احصل على نموذج ملف الصوت أو استخدم الملف الخاص .wav بك. استبدل katiesteve.wav بمسار الملف واسمه .wav .

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

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

  5. تشغيل تطبيق وحدة التحكم الجديد لبدء كتابة المحادثة:

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

هام

تأكد من تعيين متغيري البيئة و SPEECH_REGION .SPEECH_KEY إذا لم تقم بتعيين هذه المتغيرات، تفشل العينة مع ظهور رسالة خطأ.

يجب أن يتم إخراج المحادثة المنسوخة كنص:

TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream

يتم تحديد المتحدثين على أنهم Guest-1 و Guest-2 وما إلى ذلك، اعتمادا على عدد السماعات في المحادثة.

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

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

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

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

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

تلميح

يمكنك تجربة الكلام في الوقت الحقيقي إلى نص في Speech Studio دون الاشتراك أو كتابة أي تعليمة برمجية. ومع ذلك، لا يدعم Speech Studio حتى الآن اليوميات.

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

إعداد البيئة

لإعداد بيئتك، قم بتثبيت 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 قبل تشغيل المثال.

تنفيذ اليوميات من الملف مع كتابة المحادثة

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

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

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

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

    const fs = require("fs");
    const sdk = require("microsoft-cognitiveservices-speech-sdk");
    
    // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
    const speechConfig = sdk.SpeechConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION);
    
    function fromFile() {
        const filename = "katiesteve.wav";
    
        let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync(filename));
        let conversationTranscriber = new sdk.ConversationTranscriber(speechConfig, audioConfig);
    
        var pushStream = sdk.AudioInputStream.createPushStream();
    
        fs.createReadStream(filename).on('data', function(arrayBuffer) {
            pushStream.write(arrayBuffer.slice());
        }).on('end', function() {
            pushStream.close();
        });
    
        console.log("Transcribing from: " + filename);
    
        conversationTranscriber.sessionStarted = function(s, e) {
            console.log("SessionStarted event");
            console.log("SessionId:" + e.sessionId);
        };
        conversationTranscriber.sessionStopped = function(s, e) {
            console.log("SessionStopped event");
            console.log("SessionId:" + e.sessionId);
            conversationTranscriber.stopTranscribingAsync();
        };
        conversationTranscriber.canceled = function(s, e) {
            console.log("Canceled event");
            console.log(e.errorDetails);
            conversationTranscriber.stopTranscribingAsync();
        };
        conversationTranscriber.transcribed = function(s, e) {
            console.log("TRANSCRIBED: Text=" + e.result.text + " Speaker ID=" + e.result.speakerId);
        };
    
        // Start conversation transcription
        conversationTranscriber.startTranscribingAsync(
            function () {},
            function (err) {
                console.trace("err - starting transcription: " + err);
            }
        );
    
    }
    fromFile();
    
  4. احصل على نموذج ملف الصوت أو استخدم الملف الخاص .wav بك. استبدل katiesteve.wav بمسار الملف واسمه .wav .

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

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

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

    node.exe ConversationTranscription.js
    

هام

تأكد من تعيين متغيري البيئة و SPEECH_REGION .SPEECH_KEY إذا لم تقم بتعيين هذه المتغيرات، تفشل العينة مع ظهور رسالة خطأ.

يجب أن يتم إخراج المحادثة المنسوخة كنص:

SessionStarted event
SessionId:E87AFBA483C2481985F6C9AF719F616B
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning, Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSCRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=Guest-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=Guest-2
Canceled event
undefined
SessionStopped event
SessionId:E87AFBA483C2481985F6C9AF719F616B

يتم تحديد المتحدثين على أنهم Guest-1 و Guest-2 وما إلى ذلك، اعتمادا على عدد السماعات في المحادثة.

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

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

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

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

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

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

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

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

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

تلميح

يمكنك تجربة الكلام في الوقت الحقيقي إلى نص في Speech Studio دون الاشتراك أو كتابة أي تعليمة برمجية. ومع ذلك، لا يدعم Speech Studio حتى الآن اليوميات.

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

إعداد البيئة

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

تثبيت إصدار من Python من 3.7 أو أحدث. تحقق أولًا من دليل تثبيت عدة تطوير البرامج للاطلاع على أية متطلبات إضافية.

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

يجب مصادقة التطبيق الخاص بك للوصول إلى موارد خدمات 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. افتح نافذة موجه الأوامر حيث تريد المشروع الجديد، وأنشئ ملفا جديدا باسم conversation_transcription.py.

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

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

    import os
    import time
    import azure.cognitiveservices.speech as speechsdk
    
    def conversation_transcriber_recognition_canceled_cb(evt: speechsdk.SessionEventArgs):
        print('Canceled event')
    
    def conversation_transcriber_session_stopped_cb(evt: speechsdk.SessionEventArgs):
        print('SessionStopped event')
    
    def conversation_transcriber_transcribed_cb(evt: speechsdk.SpeechRecognitionEventArgs):
        print('TRANSCRIBED:')
        if evt.result.reason == speechsdk.ResultReason.RecognizedSpeech:
            print('\tText={}'.format(evt.result.text))
            print('\tSpeaker ID={}'.format(evt.result.speaker_id))
        elif evt.result.reason == speechsdk.ResultReason.NoMatch:
            print('\tNOMATCH: Speech could not be TRANSCRIBED: {}'.format(evt.result.no_match_details))
    
    def conversation_transcriber_session_started_cb(evt: speechsdk.SessionEventArgs):
        print('SessionStarted event')
    
    def recognize_from_file():
        # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
        speech_config.speech_recognition_language="en-US"
    
        audio_config = speechsdk.audio.AudioConfig(filename="katiesteve.wav")
        conversation_transcriber = speechsdk.transcription.ConversationTranscriber(speech_config=speech_config, audio_config=audio_config)
    
        transcribing_stop = False
    
        def stop_cb(evt: speechsdk.SessionEventArgs):
            #"""callback that signals to stop continuous recognition upon receiving an event `evt`"""
            print('CLOSING on {}'.format(evt))
            nonlocal transcribing_stop
            transcribing_stop = True
    
        # Connect callbacks to the events fired by the conversation transcriber
        conversation_transcriber.transcribed.connect(conversation_transcriber_transcribed_cb)
        conversation_transcriber.session_started.connect(conversation_transcriber_session_started_cb)
        conversation_transcriber.session_stopped.connect(conversation_transcriber_session_stopped_cb)
        conversation_transcriber.canceled.connect(conversation_transcriber_recognition_canceled_cb)
        # stop transcribing on either session stopped or canceled events
        conversation_transcriber.session_stopped.connect(stop_cb)
        conversation_transcriber.canceled.connect(stop_cb)
    
        conversation_transcriber.start_transcribing_async()
    
        # Waits for completion.
        while not transcribing_stop:
            time.sleep(.5)
    
        conversation_transcriber.stop_transcribing_async()
    
    # Main
    
    try:
        recognize_from_file()
    except Exception as err:
        print("Encountered exception. {}".format(err))
    
  4. احصل على نموذج ملف الصوت أو استخدم الملف الخاص .wav بك. استبدل katiesteve.wav بمسار الملف واسمه .wav .

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

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

  6. تشغيل تطبيق وحدة التحكم الجديد لبدء كتابة المحادثة:

    python conversation_transcription.py
    

هام

تأكد من تعيين متغيري البيئة و SPEECH_REGION .SPEECH_KEY إذا لم تقم بتعيين هذه المتغيرات، تفشل العينة مع ظهور رسالة خطأ.

يجب أن يتم إخراج المحادثة المنسوخة كنص:

SessionStarted event
TRANSCRIBED:
        Text=Good morning, Steve.
        Speaker ID=Unknown
TRANSCRIBED:
        Text=Good morning, Katie.
        Speaker ID=Unknown
TRANSCRIBED:
        Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time?
        Speaker ID=Guest-1
TRANSCRIBED:
        Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed.
        Speaker ID=Guest-2
TRANSCRIBED:
        Text=Is the new feature can diarize in real time?
        Speaker ID=Guest-2
TRANSCRIBED:
        Text=Absolutely.
        Speaker ID=Guest-1
TRANSCRIBED:
        Text=That's exciting. Let me try it right now.
        Speaker ID=Guest-2
Canceled event
CLOSING on ConversationTranscriptionCanceledEventArgs(session_id=92a0abb68636471dac07041b335d9be3, result=ConversationTranscriptionResult(result_id=ad1b1d83b5c742fcacca0692baa8df74, speaker_id=, text=, reason=ResultReason.Canceled))
SessionStopped event
CLOSING on SessionEventArgs(session_id=92a0abb68636471dac07041b335d9be3)

يتم تحديد المتحدثين على أنهم Guest-1 و Guest-2 وما إلى ذلك، اعتمادا على عدد السماعات في المحادثة.

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

يمكنك استخدام مدخل 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 كتابة المحادثة. يُرجى تحديد لغة أو أداة برمجة أخرى من أعلى هذه الصفحة.

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