1. نظرة عامة
تتيح واجهة Google Cloud Speech-to-Text API للمطوّرين تحويل الصوت إلى نص بـ 120 لغة ومتغيّرًا، وذلك من خلال تطبيق نماذج شبكة عصبية فعّالة على واجهة برمجة تطبيقات سهلة الاستخدام.
في هذا الدرس التطبيقي حول الترميز، ستركّز على استخدام واجهة برمجة تطبيقات Speech-to-Text API من خلال C#. ستتعرَّف على طريقة إرسال ملف صوتي باللغة الإنجليزية ولغات أخرى إلى واجهة برمجة تطبيقات Cloud Speech-to-Text API لتحويله إلى نص.
المعلومات التي ستطّلع عليها
- كيفية استخدام Cloud Shell
- كيفية تفعيل واجهة برمجة تطبيقات Speech-to-Text API
- طريقة مصادقة طلبات البيانات من واجهة برمجة التطبيقات
- كيفية تثبيت مكتبة برامج Google Cloud لـ C#
- كيفية تحويل الصوت إلى نص في الملفات الصوتية باللغة الإنجليزية
- كيفية تحويل الصوت إلى نص في الملفات الصوتية التي تتضمّن الطوابع الزمنية للكلمات
- كيفية تحويل الصوت إلى نص في الملفات الصوتية بلغات مختلفة
المتطلبات
استطلاع
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك مع C# ؟
ما هو تقييمك لتجربتك في استخدام خدمات Google Cloud Platform؟
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الإشارة إلى رقم تعريف المشروع (الذي يتم تحديده عادةً على أنّه
PROJECT_ID
). وإذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى طوال مدة المشروع. - لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع، الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. لن يؤدي إكمال هذا الدرس التطبيقي حول الترميز إلى فرض أي تكاليف، إن وُجدت. لإيقاف تشغيل الموارد لتجنب تحمُّل الفواتير إلى ما هو أبعد من هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell
.
إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة تصف ماهيتها. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.
من المفترَض أن تستغرق عملية توفير المتطلبات اللازمة والاتصال بخدمة Cloud Shell بضع دقائق فقط.
يتم تحميل هذا الجهاز الافتراضي مع جميع أدوات التطوير اللازمة. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ معظم عملك، إن لم يكن كلّه، في هذا الدرس التطبيقي حول الترميز باستخدام متصفّح.
بعد الربط بخدمة Cloud Shell، من المفترض أن تتأكّد من أنّه تمّت مصادقتك وأنّ المشروع مضبوط على رقم تعريف مشروعك.
- شغِّل الأمر التالي في Cloud Shell لتأكيد مصادقتك:
gcloud auth list
مخرجات الأمر
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- شغّل الأمر التالي في Cloud Shell للتأكد من معرفة الأمر gcloud بمشروعك:
gcloud config list project
مخرجات الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
مخرجات الأمر
Updated property [core/project].
3- تفعيل واجهة برمجة تطبيقات Speech-to-Text API
يجب تفعيل واجهة برمجة التطبيقات قبل أن تتمكّن من بدء استخدام واجهة برمجة التطبيقات Speech-to-Text API. يمكنك تفعيل واجهة برمجة التطبيقات باستخدام الأمر التالي في Cloud Shell:
gcloud services enable speech.googleapis.com
4. تثبيت مكتبة برامج واجهة برمجة التطبيقات Google Cloud Speech-to-Text API لـ C#
أولاً، أنشئ تطبيق وحدة تحكم C# بسيطًا ستستخدمه لتشغيل نماذج واجهة برمجة التطبيقات Speech-to-Text:
dotnet new console -n SpeechToTextApiDemo
من المفترض أن يظهر لك التطبيق الذي تم إنشاؤه وتم حل التبعيات:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
بعد ذلك، انتقِل إلى مجلد واحد (SpeechToTextApiDemo
):
cd SpeechToTextApiDemo/
وإضافة حزمة NuGet Google.Cloud.Speech.V1
إلى المشروع:
dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log : Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
والآن، أنت جاهز لاستخدام واجهة برمجة تطبيقات Speech-to-Text API.
5- تحويل الملفات الصوتية إلى نص
في هذا القسم، سيتم تحويل الصوت إلى نص في ملف صوتي مسجّل مسبقًا باللغة الإنجليزية. يتوفر الملف الصوتي على Google Cloud Storage.
لتحويل ملف صوتي إلى نص، افتح أداة تعديل الرموز في أعلى يسار Cloud Shell:
انتقِل إلى ملف Program.cs
داخل مجلد "SpeechToTextApiDemo
" واستبدِل الرمز بما يلي:
using Google.Cloud.Speech.V1;
using System;
namespace SpeechToTextApiDemo
{
public class Program
{
public static void Main(string[] args)
{
var speech = SpeechClient.Create();
var config = new RecognitionConfig
{
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
SampleRateHertz = 16000,
LanguageCode = LanguageCodes.English.UnitedStates
};
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
var response = speech.Recognize(config, audio);
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
Console.WriteLine(alternative.Transcript);
}
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز ومعرفة كيفية استخدامه لتحويل الصوت إلى نص في ملف صوتي*.*
تُعلم المَعلمة Encoding
واجهة برمجة التطبيقات بنوع ترميز الصوت الذي تستخدمه للملف الصوتي. Flac
هو نوع ترميز الملفات بتنسيق .raw (راجِع doc لمعرفة نوع الترميز لمزيد من التفاصيل).
في العنصر RecognitionAudio
، يمكنك ضبط واجهة برمجة التطبيقات، إمّا معرّف الموارد المنتظم (URI) الخاص بالملف الصوتي في Cloud Storage أو مسار الملف المحلي للملف الصوتي. نستخدم هنا معرّف موارد منتظم (URI) لخدمة Cloud Storage.
مرة أخرى في Cloud Shell، شغِّل التطبيق:
dotnet run
من المفترض أن يظهر لك الناتج التالي:
how old is the Brooklyn Bridge
ملخّص
في هذه الخطوة، تمكنت من تحويل الصوت إلى نص باللغة الإنجليزية وطباعة النتيجة. تعرَّف على المزيد من المعلومات عن تحويل الصوت إلى نص.
6- تحويل الصوت إلى نص باستخدام الطوابع الزمنية للكلمات
يمكن لميزة "تحويل الكلام إلى نص" رصد معادلة الوقت (الطابع الزمني) للصوت المحوّل إلى نص. تعرض الفواصل الزمنية بداية ونهاية كل كلمة منطوقة في الصوت المُقدَّم. تمثّل قيمة معادلة الوقت مقدار الوقت المنقضي من بداية الصوت، بزيادات تبلغ 100 ملي ثانية.
لتحويل ملف صوتي إلى نص باستخدام الفواصل الزمنية، انتقِل إلى ملف Program.cs
داخل مجلد "SpeechToTextApiDemo
" واستبدِل الرمز بما يلي:
using Google.Cloud.Speech.V1;
using System;
namespace SpeechToTextApiDemo
{
public class Program
{
public static void Main(string[] args)
{
var speech = SpeechClient.Create();
var config = new RecognitionConfig
{
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
SampleRateHertz = 16000,
LanguageCode = LanguageCodes.English.UnitedStates,
EnableWordTimeOffsets = true
};
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
var response = speech.Recognize(config, audio);
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
Console.WriteLine($"Transcript: { alternative.Transcript}");
Console.WriteLine("Word details:");
Console.WriteLine($" Word count:{alternative.Words.Count}");
foreach (var item in alternative.Words)
{
Console.WriteLine($" {item.Word}");
Console.WriteLine($" WordStartTime: {item.StartTime}");
Console.WriteLine($" WordEndTime: {item.EndTime}");
}
}
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز البرمجي والتأكّد من أنّه يُستخدم لتحويل الصوت إلى نص في ملف صوتي يتضمّن الطوابع الزمنية للكلمات*.* تطلب المَعلمة EnableWordTimeOffsets
من واجهة برمجة التطبيقات تفعيل الفواصل الزمنية. (يُرجى الاطّلاع على المستند للحصول على مزيد من التفاصيل).
مرة أخرى في Cloud Shell، شغِّل التطبيق:
dotnet run
من المفترض أن يظهر لك الناتج التالي:
dotnet run
Transcript: how old is the Brooklyn Bridge
Word details:
Word count:6
how
WordStartTime: "0s"
WordEndTime: "0.300s"
old
WordStartTime: "0.300s"
WordEndTime: "0.600s"
is
WordStartTime: "0.600s"
WordEndTime: "0.800s"
the
WordStartTime: "0.800s"
WordEndTime: "0.900s"
Brooklyn
WordStartTime: "0.900s"
WordEndTime: "1.100s"
Bridge
WordStartTime: "1.100s"
WordEndTime: "1.500s"
ملخّص
في هذه الخطوة، تمكّنت من تحويل الصوت إلى نص في ملف صوتي باللغة الإنجليزية يتضمّن الطوابع الزمنية للكلمات وطباعة النتيجة. يمكنك الاطّلاع على المزيد من المعلومات عن الكتابة باستخدام معادلة الكلمات.
7. تحويل الصوت إلى نص بلغات مختلفة
تتيح واجهة برمجة التطبيقات Speech-to-Text API تحويل الكلام إلى نص بأكثر من 100 لغة. يمكنك العثور على قائمة باللغات المتوافقة هنا.
في هذا القسم، سيتم تحويل الصوت إلى نص من ملف صوتي مسجّل مسبقًا إلى اللغة الفرنسية. يتوفر الملف الصوتي على Google Cloud Storage.
لتحويل الملف الصوتي الفرنسي إلى نص، انتقِل إلى ملف Program.cs
داخل المجلد SpeechToTextApiDemo
واستبدِل الرمز بما يلي:
using Google.Cloud.Speech.V1;
using System;
namespace SpeechToTextApiDemo
{
public class Program
{
public static void Main(string[] args)
{
var speech = SpeechClient.Create();
var config = new RecognitionConfig
{
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
LanguageCode = LanguageCodes.French.France
};
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");
var response = speech.Recognize(config, audio);
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
Console.WriteLine(alternative.Transcript);
}
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز البرمجي ومعرفة كيفية استخدامه لتحويل الصوت إلى نص في ملف صوتي*.* تُبيّن المَعلمة LanguageCode
واجهة برمجة التطبيقات بلغة التسجيل الصوتي.
مرة أخرى في Cloud Shell، شغِّل التطبيق:
dotnet run
من المفترض أن يظهر لك الناتج التالي:
maître corbeau sur un arbre perché tenait en son bec un fromage
هذه جملة من قصة أطفال فرنسية شهيرة.
ملخّص
في هذه الخطوة، تمكنت من تحويل الصوت إلى نص في ملف صوتي باللغة الفرنسية وطباعة النتيجة. مزيد من المعلومات حول اللغات المعتمدة
8. تهانينا!
لقد تعلمت كيفية استخدام واجهة برمجة تطبيقات Speech-to-Text API باستخدام C# لإجراء أنواع مختلفة من تحويل الصوت إلى نص في الملفات الصوتية.
تَنظيم
لتجنُّب تحمُّل الرسوم المفروضة على حسابك على Google Cloud Platform مقابل الموارد المستخدَمة في عملية البدء السريع هذه:
- انتقِل إلى وحدة تحكُّم Cloud Platform.
- اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف". في الجزء العلوي: يؤدي هذا إلى تحديد موعد المشروع للحذف.
مزيد من المعلومات
- واجهة برمجة التطبيقات Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- C#/.NET على Google Cloud Platform: https://cloud.google.com/dotnet/
- برنامج Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
الترخيص
هذا العمل مرخّص بموجب رخصة المشاع الإبداعي 2.0 مع نسب العمل إلى مؤلف عام.