תוכן עניינים:

מזהה דיבור: 12 שלבים
מזהה דיבור: 12 שלבים

וִידֵאוֹ: מזהה דיבור: 12 שלבים

וִידֵאוֹ: מזהה דיבור: 12 שלבים
וִידֵאוֹ: ✔ האם אתה מטומטם? במבחן הזה תגלה ! ( רק 12% מצליחים ) 2024, יולי
Anonim
מזהה דיבור
מזהה דיבור

שלום כולם………

זו ההנחיה השנייה שלי שאני מפרסמת

אז ברוכים הבאים לכולם …

במדריך זה אני אלמד אותך כיצד לבנות מזהה קולי באמצעות לוח ארדואינו.

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

אז לאנשים שאין להם ניסיון קודם בשימוש בארדואינו:

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

Arduino מתוכנת בסביבה שפותחה בעצמם וניתן להוריד אותה בקלות מהאתר שלהם

שלב 1: כיצד להגדיר את הסביבה?

כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?
כיצד להגדיר את הסביבה?

פשוט חפש בגוגל "הורד ארדואינו"

לחץ על "Arduino - תוכנה"

תוכל לראות את "הורד את Arduino IDE"

בחר בהתאם למערכת ההפעלה שלך

הורד והתקן אותו

אז התקנת את התוכנה בהצלחה ואתה יכול לכתוב את הקוד שלך עבור arduino ובעזרת כבל אתה יכול לחבר את לוח ה- arduino למחשב ויכול להכניס את הקוד.

שלב 2: מדוע הדרישה לארדואינו עולה?

לא יקר

לוחות Arduino זולים בהשוואה לפלטפורמות אחרות של מיקרו-בקר. זה יעלה בסביבות 50 $ בלבד.

חוצה פלטפורמות

התוכנה עבור Arduino פועלת במערכות הפעלה Windows, Macintosh ו- Linux. אם נחשוב על מערכות מיקרו-בקר אחרות זה יעבוד רק ב- Windows או במילים אחרות מוגבל רק לחלונות.

קוד פתוח ותוכנה ניתנת להרחבה

התוכנה היא קוד פתוח, כך שאנשים החלו ללמוד עליה לעומק ולכלול ספריות (הכוללות מערך פונקציות להפעלתה) של שפות תכנות אחרות.

סביבת תכנות פשוטה וקלה

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

קוד פתוח וחומרה ניתנת להרחבה

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

שלב 3: תנו לנו להתחיל !!!!

אז כבר סיפרתי שהפרויקט הזה מתמקד בעיקר בזיהוי קולי באמצעות ה- Arduino ולאפשר לו לבצע כמה משימות.

מדברים בצורה ברורה יותר ……

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

שלב 4: דרושים רכיבים

חובה רכיבים
חובה רכיבים
חובה רכיבים
חובה רכיבים
חובה רכיבים
חובה רכיבים

המרכיבים העיקריים הנדרשים לפרויקט זה הם:

Arduino Due x 1

Spark Fun Electret Breakout x 1

Spark Fun מונו אודיו מגבר פריצה x 1

רמקול: 0.25W, 8 אוהם x 1

לוח לחם x 1

5 מ"מ LED: אדום x 3

התנגדות 330 אוהם x 3

חוטי מגשר x 1

מלחם x 1

שרת BitVoicer

זהו שרת זיהוי דיבור וסינתזה לאוטומציה של דיבור.

שלב 5: איך זה באמת עובד?

1. גלי אודיו מתגלים ואז הוא לוכד את הגלים האלה ומועצים על ידי לוח Sparkfun Electret Breakout.

2. האות המוגבר שיתקבל מהתהליך הנ ל יועבר דיגיטאלי ויאגר/יאוחסן בלוח ה- Arduino באמצעות ממיר האנלוגי לדיגיטלי שלו (ADC) הנמצא בו.

3. דוגמאות השמע יסופקו לשרת BitVoicer באמצעות יציאה טורית Arduino קיימת.

4. BitVoicer Server יעבד את זרם השמע ואז יזהה את הנאום שהוא מכיל.

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

6. הארדואינו יזהה את הפקודות שסופקו ויבצע את הפעולה המתאימה. אם יתקבל זרם שמע, הוא יעמוד בתור למחלקת רמקולי BVS ויופעל באמצעות DUE DAC ו- DMA.

7. מגבר אודיו מונו SparkFun יגביר את אות ה- DAC כך שיוכל להניע רמקול 8 אוהם ואפשר לשמוע אותו דרכו.

שלב 6: חיבור הרכיבים

חיווט הרכיבים
חיווט הרכיבים
חיווט הרכיבים
חיווט הרכיבים

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

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

רוב לוחות ה- Arduino עובדים ב -5 וולט, אך ה- DUE פועל ב -3.3 וולט

ה- DUE כבר משתמש בהתייחסות אנלוגית של 3.3 וולט כך שלא תצטרך מגשר לסיכה AREF

אה סליחה, שכחתי לומר כי סיכת AREF היא "PIN PIN הפניה ANALOG" הנמצא בלוח ארדואינו כפי שמוצג באיור הבא (זהו UNO של ארדואינו אך הוא דומה באתר דומה במקרה של DUE)

סיכת AREF ב- DUE מחוברת לבקר המיקרו באמצעות גשר הנגד

כדי להשתמש בסיכת AREF, יש להלחים את הנגד R1 מהלוח המודפס [הלוח המודפס]

שלב 7: מתן קוד ללוח Arduino

מתן קוד ללוח Arduino
מתן קוד ללוח Arduino

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

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

כיצד להתקין ספרייה?

אז לפני כן עלינו לדעת כיצד להתקין ספריות שרת BitVoicer לתוך Arduino IDE, זה על תוכנת arduino.

אז בשביל זה פתח את ה- IDE של Arduino

בלוח העליון לחץ על "סקיצה"

לאחר מכן לחץ על "כלול ספרייה"

בלחיצה על "נהל ספריה"

לאחר מכן מנהל הספרייה יפתח ונוכל לראות רשימה של ספריות שמוכנות להתקנה או כאלה שכבר הותקנו

חפש את הספרייה להתקנה ולאחר מכן בחר את מספר הגירסה

כאן אנו מתקינים ספריות שרת BitVoicer, הדרושות לפרויקט זה

כיצד לייבא ספריית.zip?

ניתן גם להפיץ ספריות כקובץ ZIP או תיקיה

שם התיקיה הוא שם הספרייה

בתוך התיקייה יהיה קובץ.cpp, קובץ.h ולעתים קרובות קובץ keywords.txt, תיקיית דוגמאות וקבצים אחרים הנדרשים על ידי הספרייה

מגרסה 1.0.5 של Arduino IDE, תוכל להתקין בתוכה ספריות של צד שלישי

אל תפתח את הספרייה שהורדת, השאר אותה כפי שהיא

לשם כך עבור לסקיצה> כלול ספרייה> הוסף ספריית zip

בחר את המיקום של קובץ ה- zip ופתח אותו.

חזור לתפריט Sketch> Import Library.

אם היא מיובאת כראוי, ניתן לראות את הספרייה בתחתית התפריט הנפתח בעת הניווט.

שלב 8: תכנית/סקיצה

זוהי התוכנית שיש להעלות בארדואינו.

זה יכול להיעשות פשוט על ידי חיבור לוח Arduino למחשב והעלאתו ללוח.

שלב 9: מה לגבי הקודים שנכתבו?

כעת הבה נבחן מה בעצם כל אחת מהפונקציות הכתובות בקוד עושה ………….

הפניות לספרייה והצהרה משתנה

לפני שנדבר על זה עלינו להכיר ולהבין כמה מינוחים בסיסיים, הכוללים:

  • BVSP

    זוהי ספרייה שנותנת לנו כמעט את כל המשאבים הנדרשים להחלפת מידע עם שרת BitVoicer

    קיים פרוטוקול הקיים פרוטוקול שרת BitVoicer המיושם באמצעות מחלקה של BVSP. זה נדרש על מנת ליצור אינטראקציה עם השרת

  • BVSMic

    זוהי ספרייה המיישמת את כל הדברים הנדרשים להקלטת השמע באמצעות ממיר אנלוגי לדיגיטלי (ADC) של ה- Arduino

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

  • רמקול BVS

    זוהי ספרייה המכילה את כל המשאבים החיוניים הנדרשים לשחזור זרמי שמע שנשלחים משרת BitVoicer

    לשם כך לוח Arduino חייב להיות בעל ממיר דיגיטלי לאנלוגי מובנה (DAC)

    Arduino DUE הוא לוח ה- Arduino היחיד שיש לו DAC משולב

ספריות BVSP, BVSMic, BVSSpeaker ו- DAC, ההתייחסות לאלה נכתבות על ארבע השורות הראשונות המרכיבות את בהיית התוכנית

בעת התקנת שרת BitVoicer תוכל למצוא BitSophia המספק את כל ארבע הספריות הללו

כאשר המשתמש יוסיף הפניה לספריית BVSSpeaker ספריית ה- DAC שהוזכרה קודם לכן תופעל אוטומטית

מחלקת BVSP משמשת לתקשורת עם שרת BitVoicer

מחלקת BVSMic משמשת ללכידה ושמירה של אודיו

מחלקת רמקולים BVS משמשת לשחזור אודיו באמצעות Arduino DUE DAC

2. פונקציית ההתקנה

פונקציית ההתקנה משמשת לביצוע פעולות מסוימות כמו:

כדי להגדיר מצבי סיכה ומצביהם הראשוניים

לאתחול תקשורת סדרתית

לאתחל את מחלקת BVSP

לאתחל את שיעור BVSMic

לאתחול שיעור BVSSpeaker

הוא גם מגדיר "מטפלים באירועים" (מצביעי פונקציות) למסגרות frameReceived, modeChanged ו- streamReceived ממחלקת BVSP

שלב 10: פונקציית לולאה

היא מבצעת חמש פעולות מרכזיות:

1. הפונקציה keepAlive ()

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

2. לקבל () פונקציה

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

3. הפונקציות isSREAvailable (), startRecording (), stopRecording () ו- sendStream ()

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

4. הפונקציה play ()

פונקציה זו משמשת להשמעת האודיו בתור במחלקת BVSSpeaker.

5. playNextLEDNote ()

פונקציה זו משמשת לשליטה על האופן שבו ה- LED צריך למצמץ.

6. BVSP_frame התקבלה פונקציה

פונקציה זו נקראת בכל פעם שהפונקציה לקבל () מתחילה לזהות שהתקבלה מסגרת שלמה אחת. כאן אנו מריצים את הפקודות שהושגו משרת BitVoicer. הפקודות השולטות בהבהוב של נוריות LED הן של 2 בייטים. בתים הראשון הזה מציינים את הסיכה ובייט השני מציין את ערך הסיכה. כאן אנו משתמשים בפונקציה analogWrite () כדי להגדיר את הערך המתאים לסיכה. באותו זמן עלינו גם לבדוק האם התקבלה הפקודה playLEDNotes, שהיא מסוג Byte. אם הוא התקבל, הגדרתי playLEDNotes ל- true והוא יפקח ויציין את הזמן הנוכחי. זמן זה ישמש את הפונקציה playNextLEDNote כדי לסנכרן את הלדים עם השיר.

7. הפונקציה BVSP_modeChanged

פונקציה זו נקראת בכל פעם שהפונקציה לקבל () מזהה שינוי במצב בכיוון היוצא (Server Arduino). BitVoicer Server יכול לשלוח נתונים אודיו ממוסגרים ל- Arduino. לפני שהתקשורת עוברת ממצב אחד למשנהו, BitVoicer Server שולח אות. מחלקת BVSP מזהה אות זה ומעלה או מסמן את האירוע modeChanged. בפונקציה BVSP_modeChanged, אם המשתמש יזהה שהתקשורת עוברת ממצב זרם למצב ממוסגר, הוא יידע שהאודיו הסתיים, כך שהמשתמש יוכל להגיד למחלקת BVSSpeaker להפסיק לנגן אודיו.

8. פונקציה BVSP_stream קיבלה

פונקציה זו נקראת בכל פעם שהפונקציה Receive () מזהה שהתקבלו דוגמאות שמע. זה פשוט לאחזר את השמע ולתור אותם לתור למחלקת BVSSpeaker כך שפונקציית play () תוכל לשחזר אותם.

9. הפונקציה playNextLEDNote

פונקציה זו פועלת רק אם הפונקציה BVSP_frameReceived מזהה את הפקודה playLEDNotes. הוא שולט ומסנכרן את הנורות עם האודיו שנשלח משרת BitVoicer. כדי לסנכרן את הנורות עם השמע ולדעת את התזמון הנכון, ניתן להשתמש בתוכנת Sonic Visualizer בחינם. הוא מאפשר לנו לצפות בגלי השמע כך שהאדם יוכל לדעת מתי נלחץ על מקש פסנתר.

שלב 11: כיצד לייבא אובייקטים של פתרונות שרת BitVoicer?

הגדרנו כעת שרת BitVoicer מוגדל לעבודה עם ה- Arduino.

ישנם ארבעה אובייקטים לפתרון עיקרי עבור שרת BitVoicer: מיקומים, התקנים, בינארי -נתונים וסכמות קוליות.

הבה נבחן את אלה בפירוט:

מיקומים

הוא מייצג את המיקום הפיזי שבו מותקן ההתקן.

אנחנו יכולים ליצור מיקום שנקרא בית.

מכשירים

הם נחשבים כלקוחות של BitVoicer Server.

בדומה ליצירת מיקום אנו יכולים ליצור מכשיר מעורב, למען הקלות, תנו לנו לקרוא לו בשם ArduinoDUE.

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

BinaryData הוא סוג של פקודה ששרת BitVoicer יכול לשלוח למכשירי לקוח. הם למעשה מערכי בתים שאפשר לקשר לפקודות.

כאשר BitVoicer Server מזהה דיבור הקשור לפקודה זו, הוא שולח את מערך הבייט למכשיר היעד.

אז מסיבה זו יצרתי אובייקט BinaryData אחד לכל ערך סיכה ושמתי אותם ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff וכן הלאה.

אז הייתי צריך ליצור 18 אובייקטים של BinaryData, אז אני מציע לך להוריד ולייבא את האובייקטים מהקובץ VoiceSchema.sof המופיע להלן.

אז מהי סכימת קול?

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

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

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

BitVoicer Server תומך באודיו PCM מונו בלבד של 8 סיביות (8000 דוגמאות לשנייה) כך שיהיה צורך להמיר את קובץ השמע לפורמט זה, יש כל כך הרבה מכשירי המרה מקוונים כיום ואני ממליץ https://audio.online -convert.com/convert-to-wav.

אתה יכול לייבא (ייבוא אובייקטים לפתרון) את כל אובייקטים הפתרון בהם השתמשתי בפרויקט זה מהקבצים למטה.

אחד מהם מכיל את מכשיר DUE והשני מכיל את סכימת הקול והפקודות שלו.

שלב 12: סיכום

הנה לך !!!

יצרתם פרויקט מדהים ואתם יכולים לדבר איתו

אז תתחיל לדבר ……………

אתה יכול למצמץ את נוריות LED ובמקביל אתה יכול להגיד את זה לשיר שיר אם צריך, הקוד שלו כבר סופק

אז סיימתי את ההוראה השנייה שלי !!!!!!!!

כֵּן……

אני חושב שכולם הבינו את זה …

אם למישהו יש שאלות אתה מוזמן לשאול אותי

בפעם הבאה אעלה עם הוראה מצוינת …

להתראות…

נתראה בקרוב……………

מוּמלָץ: