استخدام واجهة برمجة تطبيقات Speech-to-Text API من خلال لغة بايثون

1. نظرة عامة

9e7124a578332fed.png

تتيح واجهة برمجة التطبيقات Speech-to-Text API للمطوّرين تحويل الصوت إلى نص بأكثر من 125 لغة ولهجة، وذلك من خلال تطبيق نماذج شبكة عصبونية قوية في واجهة برمجة تطبيقات سهلة الاستخدام.

في هذا البرنامج التعليمي، ستركز على استخدام واجهة برمجة التطبيقات Speech-to-Text API مع لغة Python.

ما ستتعلمه

  • كيفية إعداد بيئتك
  • كيفية تحويل الصوت إلى نص في الملفات الصوتية باللغة الإنجليزية
  • كيفية تحويل الصوت إلى نص في الملفات الصوتية باستخدام الطوابع الزمنية للكلمات
  • كيفية تحويل الصوت إلى نص في الملفات الصوتية بلغات مختلفة

المتطلبات

  • مشروع على السحابة الإلكترونية من Google
  • متصفّح، مثل Chrome أو Firefox
  • الإلمام باستخدام لغة Python

استطلاع الرأي

كيف ستستخدم هذا البرنامج التعليمي؟

قراءة المحتوى فقط قراءة المحتوى وإكمال التمارين

كيف تقيّم تجربتك مع Python؟

مبتدئ متوسط متمكّن

كيف تقيّم تجربتك مع خدمات Google Cloud؟

مبتدئ متوسط متقدّم

2. الإعداد والمتطلبات

إعداد البيئة بالسرعة التي تناسبك

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell 853e55310c205094.png.

3c1dabeca90e44e5.png

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة توضّح ماهية هذه الخدمة. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

9c92662c6a846a5c.png

يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.

9f0e51b578fecce5.png

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير اللازمة. توفّر هذه الخدمة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم عملك في هذا الدرس التطبيقي حول الترميز، إن لم يكن كله، باستخدام متصفح.

بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّه تم ضبط المشروع على رقم تعريف مشروعك.

  1. نفِّذ الأمر التالي في 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`
  1. نفِّذ الأمر التالي في 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، شغِّل الأمر التالي في Cloud Shell لتفعيل واجهة برمجة التطبيقات:

gcloud services enable speech.googleapis.com

ينبغي أن تظهر لك على النحو التالي:

Operation "operations/..." finished successfully.

يمكنك الآن استخدام Speech-to-Text API.

انتقِل إلى دليل المنزل:

cd ~

أنشئ بيئة Python افتراضية لعزل التبعيات:

virtualenv venv-speech

فعِّل البيئة الافتراضية:

source venv-speech/bin/activate

ثبِّت IPython ومكتبة برامج Speech-to-Text API:

pip install ipython google-cloud-speech

ينبغي أن تظهر لك على النحو التالي:

...
Installing collected packages: ..., ipython, google-cloud-speech
Successfully installed ... google-cloud-speech-2.25.1 ...

أنت الآن جاهز لاستخدام مكتبة برامج Speech-to-Text API.

في الخطوات التالية، ستستخدم برنامجًا تفاعليًا لتفسير لغة Python يُسمى IPython، وقد ثبّتّه في الخطوة السابقة. ابدأ جلسة من خلال تنفيذ ipython في Cloud Shell:

ipython

ينبغي أن تظهر لك على النحو التالي:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

أنت الآن جاهز لتقديم طلبك الأول...

4. تحويل الملفات الصوتية إلى نص

في هذا القسم، ستنسخ ملفًا صوتيًا باللغة الإنجليزية.

انسخ الرمز التالي إلى جلسة IPython:

from google.cloud import speech


def speech_to_text(
    config: speech.RecognitionConfig,
    audio: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
    client = speech.SpeechClient()

    # Synchronous speech recognition request
    response = client.recognize(config=config, audio=audio)

    return response


def print_response(response: speech.RecognizeResponse):
    for result in response.results:
        print_result(result)


def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    

يُرجى التمهّل لدراسة الرمز البرمجي والاطّلاع على كيفية استخدامه لطريقة مكتبة العميل recognize لتحويل ملف صوتي إلى نص*.* تشير المَعلمة config إلى كيفية معالجة الطلب، وتحدّد المَعلمة audio البيانات الصوتية المطلوب التعرّف عليها.

إرسال طلب:

config = speech.RecognitionConfig(
    language_code="en",
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

من المفترض أن يظهر لك الناتج التالي:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    how old is the Brooklyn Bridge
confidence:    98%

عدِّل الإعدادات لتفعيل ميزة إضافة علامات الترقيم تلقائيًا وأرسِل طلبًا جديدًا:

config.enable_automatic_punctuation = True

response = speech_to_text(config, audio)
print_response(response)

من المفترض أن يظهر لك الناتج التالي:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%

ملخّص

في هذه الخطوة، تمكّنت من تحويل ملف صوتي إلى نص باللغة الإنجليزية باستخدام مَعلمات مختلفة وطباعة النتيجة. يمكنك الاطّلاع على مزيد من المعلومات حول تحويل الملفات الصوتية إلى نص.

5- الحصول على الطوابع الزمنية للكلمات

يمكن لميزة "تحويل الكلام إلى نص" رصد الإزاحات الزمنية (الطوابع الزمنية) للصوت المحوّل إلى نص. تعرض إزاحات الوقت بداية ونهاية كل كلمة منطوقة في الصوت المقدَّم. تمثّل قيمة إزاحة الوقت مقدار الوقت الذي انقضى منذ بداية الصوت، بزيادات قدرها 100 ملي ثانية.

لتحويل ملف صوتي إلى نص مع الطوابع الزمنية للكلمات، عدِّل الرمز عن طريق نسخ ما يلي ولصقه في جلسة IPython:

def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    print("-" * 80)
    for word in best_alternative.words:
        start_s = word.start_time.total_seconds()
        end_s = word.end_time.total_seconds()
        print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
        

يُرجى التوقف لحظة لدراسة الرمز البرمجي والاطّلاع على كيفية تحويل ملف صوتي إلى نص مع طوابع زمنية للكلمات*.* تطلب المَعلمة enable_word_time_offsets من واجهة برمجة التطبيقات عرض الإزاحات الزمنية لكل كلمة (راجِع المستند لمزيد من التفاصيل).

إرسال طلب:

config = speech.RecognitionConfig(
    language_code="en",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

من المفترض أن يظهر لك الناتج التالي:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%
--------------------------------------------------------------------------------
  0.000 |   0.300 | How
  0.300 |   0.600 | old
  0.600 |   0.800 | is
  0.800 |   0.900 | the
  0.900 |   1.100 | Brooklyn
  1.100 |   1.400 | Bridge?

ملخّص

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

6. تحويل الصوت إلى نص بلغات مختلفة

تتعرّف واجهة Speech-to-Text API على أكثر من 125 لغة ولهجة. يمكنك الاطّلاع على قائمة باللغات المتاحة هنا.

في هذا القسم، ستنسخ ملفًا صوتيًا باللغة الفرنسية.

لتحويل ملف الصوت الفرنسي إلى نص، عدِّل الرمز البرمجي عن طريق نسخ ما يلي في جلسة IPython:

config = speech.RecognitionConfig(
    language_code="fr-FR",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/corbeau_renard.flac",
)

response = speech_to_text(config, audio)
print_response(response)

من المفترض أن يظهر لك الناتج التالي:

--------------------------------------------------------------------------------
language_code: fr-fr
transcript:    Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau.
confidence:    94%
--------------------------------------------------------------------------------
  0.000 |   0.700 | Maître
  0.700 |   1.100 | corbeau
  1.100 |   1.300 | sur
  1.300 |   1.600 | un
  1.600 |   1.700 | arbre
  1.700 |   2.000 | perché
  2.000 |   3.000 | Tenait
  3.000 |   3.000 | dans
  3.000 |   3.200 | son
  3.200 |   3.500 | bec
  3.500 |   3.700 | un
  3.700 |   3.800 | fromage
...
 10.800 |  11.800 | monsieur
 11.800 |  11.900 | du
 11.900 |  12.100 | corbeau.

ملخّص

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

7. تهانينا!

9e7124a578332fed.png

لقد تعلّمت كيفية استخدام واجهة برمجة التطبيقات Speech-to-Text API من خلال لغة Python لإجراء أنواع مختلفة من عمليات تحويل الصوت إلى نص على ملفات صوتية.

تَنظيم

لتنظيف بيئة التطوير، اتّبِع الخطوات التالية من Cloud Shell:

  • إذا كنت لا تزال في جلسة IPython، ارجع إلى واجهة الأوامر: exit
  • أوقِف استخدام البيئة الافتراضية للغة Python: deactivate
  • احذف مجلد البيئة الافتراضية: cd ~ ; rm -rf ./venv-speech

لحذف مشروعك على Google Cloud، اتّبِع الخطوات التالية من Cloud Shell:

  • استرداد رقم تعريف مشروعك الحالي: PROJECT_ID=$(gcloud config get-value core/project)
  • تأكَّد من أنّ هذا هو المشروع الذي تريد حذفه: echo $PROJECT_ID
  • احذف المشروع: gcloud projects delete $PROJECT_ID

مزيد من المعلومات

الترخيص

يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.