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

1. نظرة عامة

9e7124a578332fed.png

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

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

المعلومات التي ستطّلع عليها

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

المتطلبات

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

استطلاع

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

القراءة فقط اقرأها وأكمِل التمارين

كيف تقيّم تجربتك مع 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 ~

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

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 مع نسب العمل إلى مؤلف عام.