استفاده از API گفتار به متن با پایتون

1. بررسی اجمالی

9e7124a578332fed.png

Speech-to-Text API به توسعه دهندگان این امکان را می دهد تا با استفاده از مدل های شبکه عصبی قدرتمند در یک API آسان، صدا را به متن در بیش از 125 زبان و نوع تبدیل کنند.

در این آموزش، شما بر روی استفاده از API گفتار به متن با پایتون تمرکز خواهید کرد.

چیزی که یاد خواهید گرفت

  • چگونه محیط خود را تنظیم کنیم
  • چگونه فایل های صوتی را به زبان انگلیسی رونویسی کنیم
  • نحوه رونویسی فایل های صوتی با مُهر زمانی word
  • چگونه فایل های صوتی را به زبان های مختلف رونویسی کنیم

آنچه شما نیاز دارید

  • یک پروژه Google Cloud
  • مرورگری مانند کروم یا فایرفاکس
  • آشنایی با استفاده از پایتون

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط از طریق آن را بخوانید آن را بخوانید و تمرینات را کامل کنید

تجربه خود را با پایتون چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

تجربه خود را با خدمات Google Cloud چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید 853e55310c205094.png .

3c1dabeca90e44e5.png

اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.

9c92662c6a846a5c.png

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

9f0e51b578fecce5.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه می‌کند و در Google Cloud اجرا می‌شود، که عملکرد و احراز هویت شبکه را بسیار افزایش می‌دهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.

پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.

  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 اجرا کنید تا API فعال شود:

gcloud services enable speech.googleapis.com

شما باید چیزی شبیه به این را ببینید:

Operation "operations/..." finished successfully.

اکنون، می توانید از 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 ...

اکنون، شما آماده استفاده از کتابخانه کلاینت API گفتار به متن هستید!

در مراحل بعدی، از یک مفسر تعاملی پایتون به نام 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 میلی ثانیه.

برای رونویسی یک فایل صوتی با مهر زمانی word، کد خود را با کپی کردن موارد زیر در جلسه 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}")
        

کمی وقت بگذارید و کد را مطالعه کنید و ببینید که چگونه یک فایل صوتی را با مهرهای زمانی word رونویسی می‌کند*.* پارامتر enable_word_time_offsets به API می‌گوید که فاصله زمانی هر کلمه را برگرداند (برای جزئیات بیشتر به سند مراجعه کنید).

ارسال درخواست:

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?

خلاصه

در این مرحله توانستید یک فایل صوتی را به زبان انگلیسی با مهرهای زمانی word رونویسی کرده و نتیجه را چاپ کنید. درباره دریافت مهرهای زمانی کلمه بیشتر بخوانید.

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

شما یاد گرفتید که چگونه با استفاده از Python از Speech-to-Text API برای انجام انواع رونویسی روی فایل های صوتی استفاده کنید!

پاک کن

برای پاکسازی محیط توسعه خود، از Cloud Shell:

  • اگر هنوز در جلسه IPython خود هستید، به پوسته برگردید: exit
  • استفاده از محیط مجازی پایتون را متوقف کنید: 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

بیشتر بدانید

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.