מתבצעת דגימת אודיו

החל מ-Android 5.0 (Lollipop), דגימות האודיו מחדש מבוססות עכשיו לחלוטין לפי מסנני FIR שנגזרים מפונקציית Kaiser windowed-sinc. The Kaiser window-sinc מציע את המאפיינים (properties) הבאים:

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

ראו P.P. ואיידיאנה, Multirate Systems and Filter Banks, p. 50 לדיונים חלון קייזר והאופטימיזציה שלו והקשר שלו ל-Prolate Spheroidal חלונות.

הפרמטרים של העיצוב מחושבים באופן אוטומטי על סמך נתונים פנימיים קביעת האיכות ויחסי הדגימה הרצויים. מבוסס על הפרמטרים של עיצוב החלון, נוצר המסנן windowed-sinc. לשימוש במוזיקה, ה-resampler של 44.1 kHz עד 48kHz ולהפך נוצר ברמה גבוהה יותר איכותי מאשר בהמרת תדירות שרירותית.

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

שיטות מומלצות לדגימה ולדגימה מחדש

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

בחירת תדירות הדגימה להתאמה למכשיר

באופן כללי, מומלץ לבחור את תדירות הדגימה בהתאם למכשיר, בדרך כלל 44.1kHz או 48kHz. שימוש בקצב דגימה שגדול מ- 48kHz בדרך כלל יוביל לירידה באיכות כי הדגימה מחדש צריכה להיות ששימשו להפעלת הקובץ.

שימוש בדגימה מחדש פשוטה יחסים (קבועים לעומת אינטרפולציה)

הדגימה מחדש פועלת באחד מהמצבים הבאים:

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

הדגימה מחדש היא המהירה ביותר במצב פוליפאזה קבוע, כאשר היחס של הקלט שיעור התפוקה ל-L/M (בלי המחלק המשותף הגדול ביותר) ו-M פחות מ-256. לדוגמה, עבור 44,100 עד 48,000 המרות, L = 147, M = 160.

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

בחירת קצב דגימה של יחס פשוט, כמו 24kHz (1:2) ו-32kHz (2:3) כשמריצים במכשיר של 48 קילו-הרץ, למרות שבדגימות אחרות עשויים להיות מותרים תעריפים ויחסים דרך AudioTrack.

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

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

אין לשנות באופן דינמי את קצב הדגימה כאשר בתהליך צמצום הדגימה. כשמשנים את קצב הדגימה אחרי טראק של אודיו הבדלים של כ-5 עד 10 אחוזים מהשיעור המקורי עשויים תפעיל חישוב מחדש של מסנן במהלך דגימה של נתונים (כדי לבטל כראוי את הדגימה) יצירת אימייל חלופי). הפעולה הזו יכולה לצרוך משאבי מחשוב ויכולה לגרום לקליקים קוליים אם המסנן מוחלף בזמן אמת.

הגבלה של דגימות ל-6:1 לכל היותר

הפחתת הדגימה מופעלת בדרך כלל בהתאם לדרישות של מכשירי חומרה. כאשר ממיר תדירות הדגימה משמש להפחתת דגימה, כדי ליצור כינויים טובים, כדאי להגביל את יחס הדגימה שלה ל-6:1 לכל היותר וההחרגה לא תהיה גדולה מ-48,000 עד 8,000. המסנן האורכים משתנים כדי להתאים ליחס של הפחתת הדגימה, אבל אתם מתאבדים יותר העברת רוחב הפס ביחסי הפחתת דגימה גבוהים יותר כדי להימנע משימוש יתר הגדלת אורך המסנן. אין בעיות דומות לגבי כינוי דגימות. שימו לב שחלקים מסוימים בצינור עיבוד הנתונים של האודיו עשויה למנוע דגימה של יותר מ-2:1.

אם יש לך חששות לגבי זמן האחזור, אל תדגמו מחדש

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

שימוש באודיו עם נקודה צפה (floating-point)

שימוש במספרי נקודה צפה (floating-point) לייצוג נתוני אודיו יכול לשפר משמעותית את האודיו באיכות גבוהה באפליקציות אודיו בעלות ביצועים גבוהים. הנקודה הצפה כוללת את האפשרויות הבאות יתרונות:

  • טווח דינמי רחב יותר.
  • דיוק עקבי בכל הטווח הדינמי.
  • יותר מקום כדי למנוע חיתוך במהלך חישובי ביניים וזמני מעבר.

אמנם נקודה צפה (floating-point) יכולה לשפר את איכות האודיו, אבל יש לה חסרונות מסוימים:

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

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

שיטות מומלצות לשימוש באודיו עם נקודה צפה (floating-point)

השיטות המומלצות הבאות יעזרו לכם למנוע בעיות בחישובים בנקודה צפה (floating-point):

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

לאודיו עם נקודה צפה (floating-point), הקידוד בפורמט האודיו AudioFormat.ENCODING_PCM_FLOAT משמש באופן דומה ENCODING_PCM_16_BIT או ENCODING_PCM_8_BIT לציון נתוני AudioTrack פורמטים. השיטה התואמת של עומס יתר AudioTrack.write() לוקחת מערך צף כדי לספק נתונים.

Kotlin

fun write(
        audioData: FloatArray,
        offsetInFloats: Int,
        sizeInFloats: Int,
        writeMode: Int
): Int

Java

public int write(float[] audioData,
        int offsetInFloats,
        int sizeInFloats,
        int writeMode)

למידע נוסף

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

טעימות

שיעורי דגימה

דגימה מחדש

המחלוקת לגבי עומק סיביות ו-kHz גבוה

נקודה צפה

דפי הוויקיפדיה הבאים יכולים לעזור בהבנת אודיו מנקודה צפה (floating-point):

במאמר הבא מפורט מידע על ההיבטים של נקודה צפה (floating-point) שיש להם השפעה ישירה על מעצבים של מערכות מחשב: