You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/he/6-consumer/lessons/1-speech-recognition/pi-speech-to-text.md

7.0 KiB

דיבור לטקסט - Raspberry Pi

בחלק זה של השיעור, תכתבו קוד להמרת דיבור באודיו שהוקלט לטקסט באמצעות שירות הדיבור.

שליחת האודיו לשירות הדיבור

ניתן לשלוח את האודיו לשירות הדיבור באמצעות REST API. כדי להשתמש בשירות הדיבור, תחילה עליכם לבקש אסימון גישה, ואז להשתמש באסימון זה כדי לגשת ל-REST API. אסימוני הגישה פגים לאחר 10 דקות, ולכן הקוד שלכם צריך לבקש אותם באופן קבוע כדי להבטיח שהם תמיד מעודכנים.

משימה - קבלת אסימון גישה

  1. פתחו את פרויקט smart-timer על ה-Pi שלכם.

  2. הסירו את הפונקציה play_audio. אין בה צורך יותר, מכיוון שאתם לא רוצים שהטיימר החכם יחזור על מה שאמרתם.

  3. הוסיפו את הייבוא הבא לראש קובץ app.py:

    import requests
    
  4. הוסיפו את הקוד הבא מעל הלולאה while True כדי להגדיר כמה הגדרות עבור שירות הדיבור:

    speech_api_key = '<key>'
    location = '<location>'
    language = '<language>'
    

    החליפו את <key> במפתח ה-API של משאב שירות הדיבור שלכם. החליפו את <location> במיקום שבו יצרתם את משאב שירות הדיבור.

    החליפו את <language> בשם האזור עבור השפה שבה תדברו, לדוגמה en-GB עבור אנגלית, או zn-HK עבור קנטונזית. תוכלו למצוא רשימה של השפות הנתמכות ושמות האזור שלהן בתיעוד Language and voice support documentation on Microsoft docs.

  5. מתחת לזה, הוסיפו את הפונקציה הבאה לקבלת אסימון גישה:

    def get_access_token():
        headers = {
            'Ocp-Apim-Subscription-Key': speech_api_key
        }
    
        token_endpoint = f'https://{location}.api.cognitive.microsoft.com/sts/v1.0/issuetoken'
        response = requests.post(token_endpoint, headers=headers)
        return str(response.text)
    

    פונקציה זו קוראת לנקודת קצה להנפקת אסימונים, ומעבירה את מפתח ה-API ככותרת. קריאה זו מחזירה אסימון גישה שניתן להשתמש בו כדי לקרוא לשירותי הדיבור.

  6. מתחת לזה, הכריזו על פונקציה להמרת דיבור באודיו שהוקלט לטקסט באמצעות REST API:

    def convert_speech_to_text(buffer):
    
  7. בתוך הפונקציה הזו, הגדירו את כתובת ה-URL של REST API ואת הכותרות:

    url = f'https://{location}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1'
    
    headers = {
        'Authorization': 'Bearer ' + get_access_token(),
        'Content-Type': f'audio/wav; codecs=audio/pcm; samplerate={rate}',
        'Accept': 'application/json;text/xml'
    }
    
    params = {
        'language': language
    }
    

    פונקציה זו בונה כתובת URL באמצעות המיקום של משאב שירותי הדיבור. לאחר מכן היא ממלאת את הכותרות עם אסימון הגישה מהפונקציה get_access_token, כמו גם את קצב הדגימה ששימש להקלטת האודיו. לבסוף, היא מגדירה כמה פרמטרים שיועברו עם כתובת ה-URL המכילים את השפה באודיו.

  8. מתחת לזה, הוסיפו את הקוד הבא לקריאה ל-REST API וקבלת הטקסט:

    response = requests.post(url, headers=headers, params=params, data=buffer)
    response_json = response.json()
    
    if response_json['RecognitionStatus'] == 'Success':
        return response_json['DisplayText']
    else:
        return ''
    

    פונקציה זו קוראת לכתובת ה-URL ומפענחת את ערך ה-JSON שמגיע בתגובה. הערך RecognitionStatus בתגובה מציין אם הקריאה הצליחה להמיר דיבור לטקסט, ואם הערך הוא Success, הטקסט מוחזר מהפונקציה, אחרת מוחזר מחרוזת ריקה.

  9. מעל הלולאה while True:, הגדירו פונקציה לעיבוד הטקסט שהוחזר משירות הדיבור לטקסט. פונקציה זו פשוט תדפיס את הטקסט לקונסול בשלב זה.

    def process_text(text):
        print(text)
    
  10. לבסוף, החליפו את הקריאה ל-play_audio בלולאה while True בקריאה לפונקציה convert_speech_to_text, והעבירו את הטקסט לפונקציה process_text:

    text = convert_speech_to_text(buffer)
    process_text(text)
    
  11. הריצו את הקוד. לחצו על הכפתור ודברו לתוך המיקרופון. שחררו את הכפתור כשסיימתם, והאודיו יומר לטקסט ויודפס לקונסול.

    pi@raspberrypi:~/smart-timer $ python3 app.py 
    Hello world.
    Welcome to IoT for beginners.
    

    נסו סוגים שונים של משפטים, יחד עם משפטים שבהם מילים נשמעות אותו דבר אך יש להן משמעויות שונות. לדוגמה, אם אתם מדברים באנגלית, אמרו 'I want to buy two bananas and an apple too', ושימו לב כיצד הוא ישתמש בצורה הנכונה של to, two ו-too בהתבסס על ההקשר של המילה, ולא רק על הצליל שלה.

💁 תוכלו למצוא את הקוד הזה בתיקיית code-speech-to-text/pi.

😀 התוכנית שלכם להמרת דיבור לטקסט הצליחה!


כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.