1. סקירה כללית

Speech-to-Text API מאפשר למפתחים להמיר אודיו לטקסט ביותר מ-125 שפות וגרסאות, באמצעות מודלים מתקדמים של רשתות נוירונים בממשק API נוח לשימוש.
במדריך הזה נתמקד בשימוש ב-Speech-to-Text API עם Python.
מה תלמדו
- איך מגדירים את הסביבה
- איך מתמללים קובצי אודיו באנגלית
- איך מתמללים קובצי אודיו עם חותמות זמן של מילים
- איך מתמללים קובצי אודיו בשפות שונות
מה תצטרכו
סקר
איך תשתמשו במדריך הזה?
איך היית מדרג את חוויית השימוש שלך ב-Python?
איזה דירוג מתאים לדעתך לחוויית השימוש שלך בשירותי Google Cloud?
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר לאורך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת בענן.
הפעלת Cloud Shell
- ב-Cloud Console, לוחצים על Activate Cloud Shell
.

אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים עם תיאור של השירות. אם הוצג לכם מסך ביניים, לחצו על המשך.

הקצאת המשאבים והחיבור ל-Cloud Shell נמשכים רק כמה רגעים.

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן.
אחרי שמתחברים ל-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, מריצים את הפקודה הבאה ב-Cloud Shell כדי להפעיל את ה-API:
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 אומר ל-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?
סיכום
בשלב הזה, הצלחתם לתמלל קובץ אודיו באנגלית עם חותמות זמן של מילים ולהדפיס את התוצאה. מידע נוסף על קבלת חותמות זמן של מילים
6. תמלול בשפות שונות
ה-API של Speech-to-Text מזהה יותר מ-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. מעולה!

למדתם איך להשתמש ב-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
מידע נוסף
- אפשר לבדוק את ההדגמה בדפדפן: https://cloud.google.com/speech-to-text
- מסמכי התיעוד של Speech-to-Text: https://cloud.google.com/speech-to-text/docs
- Python ב-Google Cloud: https://cloud.google.com/python
- ספריות לקוח של Cloud ל-Python: https://github.com/googleapis/google-cloud-python
רישיון
עבודה זו מורשית תחת רישיון Creative Commons שמותנה בייחוס 2.0 כללי.