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 API:
dotnet new console -n SpeechToTextApiDemo
من المفترض أن يظهر لك التطبيق الذي تم إنشاؤه وتم حلّ التبعيات:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
بعد ذلك، انتقِل إلى المجلد SpeechToTextApiDemo:
cd SpeechToTextApiDemo/
وأضِف حزمة Google.Cloud.Speech.V1 NuGet إلى المشروع:
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.
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 (راجِع المستند لمعرفة المزيد من التفاصيل حول نوع الترميز).
في العنصر 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 باستخدام لغة 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 Generic License.