blackrock-cio-said-bitcoin-could-reach-new-heights.jpg

"אוקיי, גוגל!" - דיבור לטקסט בפייתון עם למידה עמוקה תוך 2 דקות

צומת המקור: 1866555

מאמר זה פורסם כחלק מה- בלוגאת מדע הנתונים

מבוא

ייתכן שאתה משתמש לעתים קרובות עוזר Google או של אפל Siri או אפילו אמזון כדי לגלות תשובות מהירות באינטרנט או פשוט לפקודה על משהו. עוזרי AI אלו ידועים בהבנת פקודות הדיבור שלנו ובביצוע המשימות הרצויות. הם מגיבים במהירות לפקודות הדיבור כמו "בסדר, גוגל. מהי בירת איסלנד?" או "היי, סירי. תראה לי את המתכון של לזניה." ולהציג את התוצאה המדויקת. האם אי פעם תהיתם איך הם באמת עושים את זה? היום, נבנה מערכת זיהוי דיבור פשוטה מאוד שלוקחת את הקול שלנו כקלט ומפיקה את הטקסט המתאים על ידי שמיעת הקלט.

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

TLDR הראה לי את הקוד!

אם אתה חסר סבלנות כמוני, זהו למעשה קוד המקור המלא שניתן להעתיק, להדביק ולהפעיל במהירות דרך קובץ Python. ודא שיש לך קובץ בשם 'my-audio.wav' כקלט הדיבור שלך. כמו כן, ודא שהתקנת את כל הספריות.

בחלק המאוחר של המדריך, נדון במה שכל אחת מהשורות עושה.

הנה הקוד!

יבוא לפיד יבוא ליברוזה יבוא numpy כ-np יבוא קובץ סאונד כ-sf מ-scipy.io יבוא קובץ wav מ-IPython.display יבוא אודיו משנאים יבוא Wav2Vec2ForCTC, Wav2Vec2Tokenizer
tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
file_name = 'my-audio.wav'
data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate input_audio, _ = librosa.load(file_name, sr=16000) input_values = tokenizer(input_audio, return_tensors="pt").input_values ​​logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = tokenizer.batch_decode(predicted_ids)[0] print(transcription)

לפני שנתחיל

הקפד לבדוק את קוד המקור המלא של הדרכה זו ריפו זה של Github.

Wav2Vec: דגם מהפכני

wave2vec | דיבור לטקסט
תמונה 2

אנו נשתמש Wave2Vec - גישת זיהוי דיבור עדכנית של פייסבוק.

החוקרים בפייסבוק מתארים גישה זו כ:

ישנן אלפי שפות המדוברות ברחבי העולם, רבות עם כמה דיאלקטים שונים, מה שמציב אתגר עצום לבניית טכנולוגיית זיהוי דיבור איכותית. פשוט לא ניתן להשיג משאבים עבור כל ניב וכל שפה על פני התחומים הרבים האפשריים (קריאה דיבור, דיבור טלפוני וכו'). המודל החדש שלנו, wav2vec 2.0, משתמש בפיקוח עצמי כדי לדחוף את הגבולות על ידי למידה מנתוני אימון ללא תווית כדי לאפשר מערכות זיהוי דיבור עבור שפות, ניבים ותחומים רבים נוספים. עם שעה אחת בלבד של נתוני אימון מתויגים, wav2vec 2.0 מתעלה על המצב הקודם בתת-קבוצת 100 השעות של רף LibriSpeech - תוך שימוש בנתונים מתויגים פי 100 פחות.

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

מודל זה, כמו BERT, מאומן על ידי חיזוי יחידות דיבור עבור קטעי אודיו במסכה. אודיו של דיבור, לעומת זאת, הוא אות מתמשך הלוכד תכונות רבות של ההקלטה מבלי להיות מפולח בבירור למילים או ליחידות אחרות. Wav2vec 2.0 מטפל בבעיה זו על ידי לימוד יחידות בסיסיות של 25ms על מנת ללמוד ייצוגים בהקשרים ברמה גבוהה. יחידות אלה משמשות לאחר מכן לאפיין מגוון רחב של הקלטות אודיו מדוברות, מה שמשפר את החוסן של wav2vec. עם נתוני אימון פחות מתויגים פי 100, אנו יכולים ליצור אלגוריתמים לזיהוי קול שעולים על הגישות הטובות ביותר בפיקוח למחצה. הודות ללמידה בפיקוח עצמי, Wav2vec 2.0 הוא חלק ממודלים של למידת מכונה המסתמכים פחות על קלט מסומן. פיקוח עצמי סייע בקידום מערכות סיווג תמונות, הבנת וידאו והבנת תוכן. האלגוריתם עשוי להוביל להתקדמות בטכנולוגיית הדיבור עבור מגוון רחב של שפות, דיאלקטים ותחומים, כמו גם עבור מערכות נוכחיות.

בחירת הסביבה והספריות שלנו

אנו נשתמש PyTorch, מסגרת למידת מכונה בקוד פתוח עבור פעולה זו. באופן דומה, נשתמש רוֹבּוֹטרִיקִים, ספריית עיבוד שפה טבעית מתקדמת מאת פנים מחבקות.

להלן רשימה של כל הדרישות שאולי תרצה להתקין דרך pip. מומלץ להתקין את כל החבילות הללו בתוך א סביבה וירטואלית לפני שנמשיך.

  1. מחברת צדק
  2. לפיד
  3. ליברוסה
  4. מטומטם
  5. קובץ סאונד
  6. סקיפי
  7. IPython
  8. רוֹבּוֹטרִיקִים

עבודה עם הקוד

פתח את מחברת Jupyter שלך תוך הפעלת הסביבה הוירטואלית המכילה את כל הספריות החיוניות שהוזכרו לעיל.

לאחר טעינת המחברת, צור קובץ חדש והתחל לייבא את הספריות.

יבוא לפיד יבוא ליברוזה יבוא numpy כ-np יבוא קובץ סאונד כ-sf מ-scipy.io יבוא קובץ wav מ-IPython.display יבוא אודיו משנאים יבוא Wav2Vec2ForCTC, Wav2Vec2Tokenizer

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

tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

ההורדה עשויה להימשך זמן מה.

לאחר שתסיים, אתה יכול להקליט את הקול שלך ולשמור את קובץ ה-wav ממש ליד הקובץ שבו אתה כותב את הקוד שלך. אתה יכול לקרוא לשמע שלך בשם "my-audio.wav".

file_name = 'my-audio.wav' Audio(file_name)

עם קוד זה, אתה יכול לנגן את האודיו שלך במחברת Jupyter.

בשלב הבא: נטען את קובץ האודיו שלנו ונבדוק את קצב הדגימה והזמן הכולל שלנו.

data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate print('Sampling rate:',framerate,'Hz')

התוצאה מדוגמה זו תשתנה משלך מכיוון שאתה עשוי להשתמש באודיו משלך.

קצב דגימה: 44100 הרץ

זה מודפס עבור האודיו לדוגמה שלי.

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

input_audio, _ = librosa.load(file_name, sr=16000)

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

input_values ​​= tokenizer(input_audio, return_tensors="pt").input_values ​​logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = tokenizer.batch_decode(predicted_ids)[0] print(transscription)

הפלט:

"למידה עמוקה היא מדהימה"

ובכן, זה בדיוק מה שהקלטתי בקובץ my-audio.wav.

המשך ונסה להקליט את הדיבור שלך ולהפעיל מחדש את גוש הקוד האחרון. זה אמור לעבוד תוך שניות.

אודות המחבר:

שלום שם! שמי אקאש ואני עובד כמפתח Python כבר למעלה מ-4 שנים. במהלך הקריירה שלי, התחלתי כמפתח ג'וניור פייתון באתר פורטל העבודה הגדול ביותר בנפאל, מרוג'וב. מאוחר יותר, הייתי מעורב ב-Data Science ומחקר בחברת שיתוף הנסיעות הראשונה של נפאל, לקשקש. נכון לעכשיו, הייתי מעורב באופן פעיל במדעי הנתונים וכן בפיתוח אתרים עם Django.

אתה יכול למצוא את הפרויקטים האחרים שלי ב:

https://github.com/akashadhikari

חבר אותי בלינקדאין

https://www.linkedin.com/in/akashadh/

Email: [מוגן בדוא"ל] | [מוגן בדוא"ל]

אתר אינטרנט (עובד על בלוג מדעי הנתונים): https://akashadhikari.github.io/

מקורות תמונה:

תמונה 1 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/

תמונה 2 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/

הערות סיום:

תודה על הקריאה!

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

מקור: https://www.analyticsvidhya.com/blog/2021/09/ok-google-speech-to-text-in-python-with-deep-learning-in-2-minutes/

בול זמן:

עוד מ אנליטיקה וידיה