WaloViz
חבילת קוד-פתוח פייתונית של נגן שמע אינטראקטיבי עם ספקטרוגרמה מובנית.
האתר של WaloViz , ה-GitHub Repo , דמו ב-Google Colab
TL;DR
נסו ללחוץ על הספקטרוגרמה מעל, המנגינה תתחיל להתנגן :)
מה זה WaloViz?
הפרויקט WaloViz הוא ספריית קוד-פתוח פייתונית למחקר שמע מבוסס מחברות Jupyter, היא יוצרת נגן שמע אינטראקטיבי עם ספקטרוגרמה מובנית (מה זה ספקטרוגרמה?).
היא עובדת עם קבצי wav
או כל פורמט קבצי שמע אחר הודות ל-torchaudio
ו-ffmpeg
, והנוחות האינטראקטיבית היא הודות לגמישות ויכולת ההתאמתיות המתקדמת של ה-HoloViz ecosystem, לכן השם - wav + HoloViz = WaloViz
.
יצרתי את WaloViz עם שלושה עקרונות מכווינים:
- היא צריכה להיות קלה - נדרשות רק שלוש שורות קוד כדי להתחיל להשתמש
- היא צריכה להיות חזקה - יש הרבה יכולות מתקדמות, כגון ייצוא קובץ HTML או הצגת נתונים משלכם מעל הספקטרוגרמה
- היא צריכה להיות פתוחה - קוד-פתוח זו הדרך הנכונה בשביל WaloViz, תעיפו מבט על ה-GitHub Repo שלנו, ואם אהבתם - תשקלו לתת לנו
למה התחלתי את WaloViz
כשאני עובד על מחקר שמע אני תמיד צריך להקשיב לשמעים ולראות את הספקטרוגרמות שלהם (מה זה ספקטרוגרמה?), יש המון כלים ייעודיים וטובים במיוחד כדי לעשות את זה, למשל:
הם דוגמאות טובות.
אבל לכולם יש את אותה החולשה - הם כלי Desktop שצריכים את קובץ השמע לוקלית - בעוד המחקר שלי הוא במחברת Jupyter.
יש שיאמרו “זה לא כזו בעיה קשה, פשוט צור קובץ ואז תוריד אותו”, אבל זה תהליך שנהיה יותר ויותר מציק ככל שה-Setup יותר מורכב ויש יותר קבצי שמע, מהר מאוד זה נהיה בלגן מעמיס.
הגעתי למצב שיצרתי לעצמי כל מיני ויזואליזציות מעפנות שיעזרו לי לשמוע את השמע ולהציג את הספקטרוגרמה בתוך מחברת ה-Jupyter שלי, נדהמתי לגלות שהרבה מחברי למחקר והעבודה עשו בדיוק את אותו הדבר בהרבה דרכים שונות במקרים שונים.
דברים כאלו משגעים אותי!
אז עשיתי את הדבר ההגיוני היחידי - יצרתי עוד נגן שמע אחד שישלוט בכולם!
מה זה ספקטרוגרמה?
גם אם אתם יודעים מהן ספקטרוגרמות - דוגמת הספקטרוגרמה של “Twinkle” מציגה כמה יכולות מתקדמות שאולי תרצו לראות, אם לא - תרגישו בנוח לקפוץ קדימה :)
ספקטרוגרמה זו מילה גדולה, פירושה הישיר הוא “תמונה של ספקטרום”, או במילים אחרות זו ויזואליזציה של תדרים.
בואו ננסה לחשוב על זה במונחים מוזיקליים, לכל תו מוזיקלי יש תדר בסיס שתואם לו, זה אומר שלהשתמש בתדרים זה מאוד דומה לשימוש בתווים מוזיקליים, במובן הזה ספקטרוגרמה היא מאוד דומה לדף תווים!
ככל שמתקדמים משמאל לימין מתקדמים בזמן, וככל שעולים מלמטה למעלה עולים בגובה הצליל (התדר).
בדף תווים הרקע לבן, הכתמים השחורים אומרים שהתו ההוא מתנגן באותו הרגע.
בספקטרוגרמה הרקע הוא שחור, וכתם צהוב בהיר אומר שהתדר ההוא מתנגן באותו הרגע.
הבדל מהותי אחד הוא שבספקטרוגרמה ככל שהכתם בהיר יותר - הצליל יהיה רועש יותר, ויש מעבר חלק בין מאוד שקט (כהה) למאוד רועש (בהיר).
עוד הבדל הוא שבמקום סוגים שונים של כתמים, כדי לציין את משך הצליל מותחים את הכתם אופקית לקו. אורך הקו הוא משך הצליל!
לראות את התדרים של שמע בצורה ויזואלית זה מאוד חשוב, מומחה שמע יכול להבין כל מיני דברים רק מלהסתכל על הספקטרוגרמה, באופן דומה לאיך שמוזיקאי יכול להבין הרבה רק מלקרוא את דף התווים.
יכולות מתקדמות
היכולת הראשונה שחוקרים אוהבים להשתמש בה היא הצגת עקומות מחושבות על הספקטרוגרמה.
דוגמא מאוד פשוטה תהיה להציג את ה-Waveform או מניפולציות שלו, זה יכול להיעשות בהרבה דרכים, הנה אחת מהן:
בדוגמא מעל יש 3 עקומות מוצגות על הספקטרוגרמה:
- ה-
waveform
, זה משתמש ב-callback כדי להשיג את ה-waveform ולהחזיר אותו כעקומה - ה-
envelope
, זה גם משתמש ב-callback, אבל הפעם מחשב מתוך ה-waveform את ה-envelope - עקומה
random
, פשוט מועברת כעקומה מחושבת מראש שצריך להציג מעל הספקטרוגרמה
מהדוגמא הפשוטה הזו אפשר לראות כמה היכולת הזו חזקה כדי להציג נתונים של משימות מורכבות כמו SAD (Speech Activity Detection), דיאריזציה, ועוד הרבה משימות שמע דומות.
יש ל-WaloViz עוד הרבה יכולות, לכו לאתר התיעוד של WaloViz כדי ללמוד עוד :)