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/3-spoken-feedback/virtual-device-text-to-spee...

5.5 KiB

טקסט לדיבור - מכשיר IoT וירטואלי

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

המרת טקסט לדיבור

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

כל שפה תומכת במגוון קולות שונים, וניתן לקבל את רשימת הקולות הנתמכים לכל שפה מתוך ערכת ה-SDK של שירותי הדיבור.

משימה - המרת טקסט לדיבור

  1. פתחו את פרויקט smart-timer ב-VS Code, וודאו שהסביבה הווירטואלית נטענת במסוף.

  2. ייבאו את SpeechSynthesizer מתוך החבילה azure.cognitiveservices.speech על ידי הוספתו לייבוא הקיים:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. מעל הפונקציה say, צרו תצורת דיבור לשימוש עם ה-speech synthesizer:

    speech_config = SpeechConfig(subscription=speech_api_key,
                                 region=location)
    speech_config.speech_synthesis_language = language
    speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
    

    תצורה זו משתמשת באותו מפתח API, מיקום ושפה שבהם השתמש ה-recognizer.

  4. מתחת לכך, הוסיפו את הקוד הבא כדי לקבל קול ולהגדיר אותו בתצורת הדיבור:

    voices = speech_synthesizer.get_voices_async().get().voices
    first_voice = next(x for x in voices if x.locale.lower() == language.lower())
    speech_config.speech_synthesis_voice_name = first_voice.short_name
    

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

    💁 ניתן לקבל את הרשימה המלאה של הקולות הנתמכים מתוך התיעוד על תמיכה בשפות וקולות ב-Microsoft Docs. אם ברצונכם להשתמש בקול מסוים, תוכלו להסיר את הפונקציה הזו ולהגדיר את הקול ישירות לשם הקול מתוך התיעוד. לדוגמה:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. עדכנו את התוכן של הפונקציה say כדי לייצר SSML לתגובה:

    ssml =  f'<speak version=\'1.0\' xml:lang=\'{language}\'>'
    ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>'
    ssml += text
    ssml += '</voice>'
    ssml += '</speak>'
    
  6. מתחת לכך, עצרו את זיהוי הדיבור, השמיעו את ה-SSML, ואז הפעילו מחדש את הזיהוי:

    recognizer.stop_continuous_recognition()
    speech_synthesizer.speak_ssml(ssml)
    recognizer.start_continuous_recognition()
    

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

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

  7. הפעילו את האפליקציה, וודאו שאפליקציית הפונקציות פועלת גם היא. הגדירו כמה טיימרים, ותשמעו תגובה קולית שאומרת שהטיימר שלכם הוגדר, ואז תגובה קולית נוספת כשהטיימר מסתיים.

💁 תוכלו למצוא את הקוד הזה בתיקייה code-spoken-response/virtual-iot-device.

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


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