דמיינו לעצמכם מנתח שמקבל שיחות וידאו עם מטופלים ברחבי העולם ללא צורך במתרגם אנושי. מה אם סטארטאפ בתחילת דרכו יוכל בקלות להרחיב את המוצר שלו אל מעבר לגבולות ולשווקים גיאוגרפיים חדשים על ידי מתן תמיכת לקוחות ומכירות זורמים, מדויקים ורב-לשוניים, והכל ללא צורך במתרגם אנושי חי? מה קורה לעסק שלך כשאתה כבר לא קשור לשפה?
מקובל היום לקיים פגישות וירטואליות עם צוותים בינלאומיים ולקוחות הדוברים שפות רבות ושונות. בין אם מדובר בפגישות פנימיות או חיצוניות, פירוש הדבר לרוב הולך לאיבוד בדיונים מורכבים ואתם עלולים להיתקל במחסומי שפה שמונעים מכם להיות יעילים ככל האפשר.
בפוסט זה תלמדו כיצד להשתמש בשלושה שירותי AWS מנוהלים במלואם (אמזון תעתיק, אמזון תרגם, ו אמזון פולי) לייצר פתרון מתרגם דיבור לדיבור כמעט בזמן אמת שיכול לתרגם במהירות את קלט הקול החי של דובר מקור לשפת יעד מדוברת, מדויקת ומתורגמת, והכל עם חוויית למידת מכונה אפסית (ML).
סקירה כללית של הפיתרון
המתרגם שלנו מורכב משלושה שירותי AWS ML מנוהלים במלואם הפועלים יחד בסקריפט Python יחיד באמצעות AWS SDK עבור Python (Boto3) עבור תרגום הטקסט וחלקי הטקסט לדיבור שלנו, ו-SDK סטרימינג אסינכרוני לתמלול קלט שמע.
אמזון תמלול: הזרמת דיבור לטקסט
השירות הראשון שבו אתה משתמש במחסנית שלנו הוא Amazon Transcribe, שירות דיבור לטקסט מנוהל במלואו שלוקח דיבור קלט ומתמלל אותו לטקסט. ל- Amazon Transcribe יש שיטות קליטה גמישות, אצווה או סטרימינג, מכיוון שהיא מקבלת קבצי אודיו מאוחסנים או זרימת נתוני אודיו. בפוסט הזה אתה משתמש ב- Amazon Transcribe סטרימינג SDK אסינכרוני עבור Python, המשתמש בפרוטוקול הסטרימינג של HTTP/2 כדי להזרים אודיו חי ולקבלת תמלילים חיים.
כשבנינו את אב הטיפוס הזה לראשונה, הטמעת סטרימינג של Amazon Transcribe לא תמכה בזיהוי שפה אוטומטי, אבל זה כבר לא המקרה החל מנובמבר 2021. גם הטמעת אצווה וגם הזרמת סטרימינג תומכת כעת בזיהוי שפה אוטומטי עבור כולם שפות נתמכות. בפוסט זה, אנו מראים כיצד פתרון מבוסס פרמטרים באמצעות עיצוב ללא פרמטרים רב שפות חלק אפשרי באמצעות שימוש בזיהוי שפות אוטומטי בסטרימינג. לאחר שקטע הדיבור המתומלל שלנו מוחזר כטקסט, אתה שולח בקשה ל-Amazon Translate כדי לתרגם ולהחזיר את התוצאות ב-Amazon Transcribe. EventHandler
שִׁיטָה.
Amazon Translate: ממשק-of-the-art, API לתרגום מנוהל במלואו
הבא בערימה שלנו הוא Amazon Translate, שירות תרגום מכונות עצביות המספק תרגום שפה מהיר, איכותי, זול וניתן להתאמה אישית. החל מיוני 2022, אמזון Translate תומכת בתרגום ל-75 שפות, כאשר צמדי שפות חדשים ושיפורים נעשים ללא הרף. Amazon Translate משתמשת במודלים של למידה עמוקה המתארחים בארכיטקטורת ענן AWS ניתנת להרחבה ועמידה במיוחד כדי לספק במהירות תרגומים מדויקים בזמן אמת או באצווה, בהתאם למקרה השימוש שלך. השימוש ב-Amazon Translate הוא פשוט ואינו דורש ניהול של ארכיטקטורה או מיומנויות ML הבסיסיות. ל- Amazon Translate יש מספר תכונות, כמו יצירה ושימוש ב- מונחים מותאמים אישית לטפל במיפוי בין מונחים ספציפיים לתעשייה. למידע נוסף על מגבלות השירות של Amazon Translate, עיין ב הנחיות ומגבלות. לאחר שהאפליקציה מקבלת את הטקסט המתורגם בשפת היעד שלנו, היא שולחת את הטקסט המתורגם לאמזון פולי לצורך השמעת אודיו מתורגמת מיידית.
Amazon Polly: ממשק API של טקסט לדיבור מנוהל במלואו
לבסוף, אתה שולח את הטקסט המתורגם לאמזון פולי, שירות טקסט-לדיבור מנוהל במלואו שיכול לשלוח בחזרה תגובות של קטעי אודיו אמיתיים להפעלת סטרימינג מיידית או באצווה ונשמר ב שירות אחסון פשוט של אמזון (Amazon S3) לשימוש מאוחר יותר. אתה יכול לשלוט בהיבטים שונים של דיבור כגון הגייה, עוצמת קול, גובה הצליל, קצב דיבור ועוד באמצעות סטנדרטי שפת סימון של סינתזת דיבור (SSML).
אתה יכול לסנתז דיבור עבור פולי מסויים של אמזון קולות עצביים שימוש בסגנון מגיש חדשות כדי לגרום להם להישמע כמו מגיש חדשות בטלוויזיה או ברדיו. אתה יכול גם לזהות מתי נאמרים מילים או משפטים ספציפיים בטקסט על סמך המטא נתונים הכלולים בזרם האודיו. זה מאפשר למפתח לסנכרן הדגשה גרפית ואנימציות, כגון תנועות שפתיים של אווטאר, עם הדיבור המסונתז.
אתה יכול לשנות את ההגייה של מילים מסוימות, כגון שמות חברות, ראשי תיבות, מילים לועזיות או ניאולוגיזם, למשל "P!nk", "ROTFL" או "C'est la vie" (כאשר מדובר בשפה שאינה צרפתית קול), תוך שימוש בלקסיקונים מותאמים אישית.
סקירה כללית של אדריכלות
התרשים הבא ממחיש את ארכיטקטורת הפתרונות שלנו.
זרימת העבודה היא כדלקמן:
- השמע נקלט על ידי Python SDK.
- אמזון פולי ממירה את הדיבור לטקסט, ב-39 שפות אפשריות.
- Amazon Translate ממירה את השפות.
- Amazon Live Transcribe ממיר טקסט לדיבור.
- אודיו יוצא לרמקולים.
תנאים מוקדמים
אתה צריך להגדיר מכונה מארח עם מיקרופון, רמקולים וחיבור אינטרנט אמין. מחשב נייד מודרני אמור לעבוד מצוין עבור זה כי אין צורך בחומרה נוספת. לאחר מכן, עליך להגדיר את המכשיר עם כמה כלי תוכנה.
עליך להתקין את Python 3.7+ כדי להשתמש ב-SDK הזרימה האסינכרוני של Amazon Transcribe ועבור מודול Python בשם pyaudio
, שבו אתה משתמש כדי לשלוט במיקרופון וברמקולים של המכשיר. מודול זה תלוי בספריית C בשם portaudio.h
. אם אתה נתקל בבעיות עם pyaudio
שגיאות, אנו מציעים לבדוק את מערכת ההפעלה שלך כדי לראות אם יש לך את portaudio.h
ספרייה מותקנת.
להרשאה ואימות של קריאות שירות, אתה יוצר AWS זהות וניהול גישה תפקיד שירות (IAM) עם הרשאות להתקשר לשירותי AWS הדרושים. על ידי הגדרת ה ממשק שורת הפקודה של AWS (AWS CLI) עם תפקיד שירות IAM זה, אתה יכול להריץ את הסקריפט שלנו במחשב שלך ללא צורך בהעברת מפתחות או סיסמאות, מכיוון שספריות AWS נכתבות כדי להשתמש באישורים המוגדרים של משתמש AWS CLI. זוהי שיטה נוחה ליצירת אבות טיפוס מהירה ומבטיחה שהשירותים שלנו נקראים על ידי זהות מורשית. כמו תמיד, עקוב אחר עקרון ההרשאות הקטנות ביותר בעת הקצאת מדיניות IAM בעת יצירת משתמש או תפקיד IAM.
לסיכום, אתה צריך את התנאים המוקדמים הבאים:
- מחשב PC, Mac או Linux עם מיקרופון, רמקולים וחיבור לאינטרנט
- השמיים
portaudio.h
ספריית C עבור מערכת ההפעלה שלך (brew, apt get, wget), הדרושה כדי ש-pyaudio יפעל - AWS CLI 2.0 עם משתמש IAM מורשה כהלכה שהוגדר על ידי הפעלת aws configure ב-AWS CLI
- פייתון 3.7+
- ה-SDK האסינכרוני של Amazon Transcribe Python
- ספריות Python הבאות:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
מיישמים את הפתרון
אתה תסתמך מאוד על ה-SDK הזרימה של Amazon Transcribe האסינכרוני עבור Python כנקודת התחלה, ותתבסס על ה-SDK הספציפי הזה. לאחר שהתנסת ב-SDK הסטרימינג עבור Python, אתה מוסיף מיקרופון זורם קלט על ידי שימוש pyaudio
, ספריית Python בקוד פתוח נפוצה המשמשת למניפולציה של נתוני אודיו. לאחר מכן אתה מוסיף קריאות Boto3 ל-Amazon Translate ו-Amazon Polly עבור פונקציונליות התרגום והטקסט לדיבור שלנו. לבסוף, אתה מזרים שוב דיבור מתורגם דרך הרמקולים של המחשב pyaudio
. מודול Python concurrent
נותן לך את היכולת להריץ קוד חסימה בשרשור אסינכרוני משלו כדי להשמיע את הנאום של Amazon Polly שהוחזר בצורה חלקה, לא חוסמת.
בואו לייבא את כל המודולים הדרושים שלנו, לתמלל שיעורי סטרימינג, ולהציג כמה גלובלים:
ראשית, אתה משתמש pyaudio
כדי לקבל את קצב הדגימה של התקן הקלט, אינדקס המכשיר וספירת הערוצים:
אם זה לא עובד, אתה יכול גם לעבור ולהדפיס את המכשירים שלך כפי שמוצג בקוד הבא, ולאחר מכן להשתמש באינדקס המכשיר כדי לאחזר את פרטי המכשיר עם pyaudio
:
אתה משתמש channel_count
, sample_rate
, ו dev_index
כפרמטרים בזרם מיקרופון. בפונקציית ההתקשרות חזרה של הזרם הזה, אתה משתמש ב- asyncio
התקשרות לא חוסמת חוט בטוח כדי להכניס את בתים הקלט של זרם המיקרופון לתוך an asyncio
תור קלט. שימו לב לאובייקטי הלולאה וה-input_queue שנוצרו איתם asyncio
וכיצד הם משמשים בקוד הבא:
עכשיו כאשר הגנרטור פועל mic_stream()
נקרא, הוא מניב ללא הרף בתים של קלט כל עוד יש נתוני קלט של מיקרופון בתור הקלט.
עכשיו כשאתה יודע איך לקבל בתים קלט מהמיקרופון, בואו נראה איך לכתוב בתים של פלט אמזון פולי לזרם פלט רמקול:
עכשיו בואו נרחיב על מה שבניתם בפוסט A-Synchronous Amazon Transcribe Streaming SDK עבור Python. בקוד הבא, אתה יוצר אובייקט מבצע באמצעות ה- ThreadPoolExecutor
תת כיתה עם שלושה עובדים במקביל. לאחר מכן אתה מוסיף קריאת אמזון Translate לתמליל שהוחזר הסופי ב-EventHandler ומעביר את הטקסט המתורגם הזה, אובייקט המבצע והנושא שלנו aws_polly_tts()
לתפקד לתוך asyncio
לולאה עם loop.run_in_executor()
, אשר מריץ את פונקציית Amazon Polly שלנו (עם טקסט קלט מתורגם) באופן אסינכרוני בתחילת האיטרציה הבאה של asyncio
לולאה.
לבסוף, יש לנו את loop_me()
פוּנקצִיָה. בו אתה מגדיר write_chunks()
, שלוקח זרם של Amazon Transcribe כארגומנט וכותב אליו באופן אסינכרוני נתחים של קלט מיקרופון זורם. לאחר מכן אתה משתמש MyEventHandler()
עם זרם תמלול הפלט כארגומנט שלו וצור אובייקט מטפל. אז אתה משתמש לחכות עם asyncio.gather()
והעבירו את ה-write_chunks() ואת המטפל עם שיטת handle_events() כדי לטפל בעתידים בסופו של דבר של קורוטינים אלו. לבסוף, אתה אוסף את כל לולאות האירוע ולופ את loop_me()
לתפקד עם run_until_complete()
. ראה את הקוד הבא:
כאשר הקוד הקודם מופעל יחד ללא שגיאות, אתה יכול לדבר לתוך המיקרופון ולשמוע במהירות את קולך מתורגם לסינית מנדרינית. תכונת זיהוי השפה האוטומטית עבור Amazon Transcribe ו- Amazon Translate מתרגמת כל שפת קלט נתמכת לשפת היעד. אתה יכול לדבר די הרבה זמן ובגלל האופי הבלתי-חוסם של קריאות הפונקציה, כל קלט הדיבור שלך מתורגם ומדובר, מה שהופך את זה לכלי מצוין לתרגום נאומים חיים.
סיכום
למרות שפוסט זה הדגים כיצד שלושת ממשקי ה-API של AWS המנוהלים במלואם יכולים לתפקד ביחד בצורה חלקה, אנו ממליצים לך לחשוב כיצד תוכל להשתמש בשירותים אלה בדרכים אחרות כדי לספק תמיכה רב-לשונית עבור שירותים או מדיה כמו כתוביות סגורות רב-לשוניות תמורת חלק מהעלות הנוכחית . רפואה, עסקים ואפילו יחסים דיפלומטיים יכולים כולם ליהנות משירות תרגום המשתפר ללא הרף, בעלות נמוכה ובתחזוקה נמוכה.
למידע נוסף על בסיס קוד הוכחת הרעיון עבור מקרה שימוש זה, עיין ב- שלנו GitHub.
על הכותבים
מייקל טראן הוא אדריכל פתרונות עם צוות הנדסת Envision בשירותי האינטרנט של אמזון. הוא מספק הדרכה טכנית ומסייע ללקוחות להאיץ את יכולתם לחדש באמצעות הצגת אמנות האפשרי ב-AWS. הוא בנה מספר אבות טיפוס סביב AI/ML, ו-IoT עבור הלקוחות שלנו. אתה יכול לפנות אליי @Mike_Trann בטוויטר.
קמרון ווילקס הוא אדריכל אבות טיפוס בצוות ה-AWS Industry Accelerator. בעודו בצוות הוא סיפק מספר אבות טיפוס מבוססי ML ללקוחות כדי להדגים את "אמנות האפשר" של ML ב-AWS. הוא נהנה מהפקה מוזיקלית, משטח ועיצוב.
- AI
- איי אמנות
- מחולל אמנות ai
- איי רובוט
- אמזון פולי
- אמזון תעתיק
- אמזון תרגם
- בינה מלאכותית
- הסמכת בינה מלאכותית
- בינה מלאכותית בבנקאות
- רובוט בינה מלאכותית
- רובוטים של בינה מלאכותית
- תוכנת בינה מלאכותית
- למידת מכונות AWS
- blockchain
- blockchain conference ai
- קוינגניוס
- בינה מלאכותית של שיחה
- קריפטו כנס ai
- של דאל
- למידה עמוקה
- גוגל איי
- למידת מכונה
- אפלטון
- plato ai
- מודיעין אפלטון
- משחק אפלטון
- אפלטון נתונים
- פלטוגיימינג
- סולם ai
- תחביר
- מדריך טכני
- זפירנט