Audiokodekek alkalmazása az audioteljesítmény egyszerűbb optimalizálására beágyazott rendszereknél

By Jacob Beningo

Contributed By DigiKey's North American Editors

A tervezők közül sokan egy audiokodeket is beépítenek a mikrovezérlő-alapú beágyazott rendszereikbe, hogy a megépített eszköz által reprodukált hang minél magasabb hanghűségű legyen. Eközben meg kell oldaniuk azt is, hogy az audiokodeket összehangolják a saját alkalmazásukkal, mert megfelelő hangolás nélkül az alkalmazás által reprodukált hang még jó kodek és hangszóró esetén is lapos vagy rossz minőségű lehet. A probléma az, hogy minden hangszóró frekvenciaválasza egyedi, ezért a kodeket az adott a hangszóró jellemzőihez kell hozzáigazítani, szem előtt tartva ugyanakkor azt is, hogy milyen hang lejátszására fog sor kerülni, valamint a szükséges frekvenciválaszt is.

A hanglejátszó rendszer hangolásakor nem a hardveres szűrés a megoldás, hanem az audiokodek saját digitális szűrőblokkjait kell megfelelően kihasználni. Minden kodek rendelkezik ilyen blokkal, hogy a rendszerfejlesztők a kimeneti jelet felül-, alul és sáváteresztő szűrőkkel módosítani tudják. Így a hangszóró frekvenciaválasza finoman behangolható, sőt, szükség esetén akár módosítható is.

Ez a cikk a kodekekben található belső digitális audioblokkokat tárgyalja, példaként felhasználva az AKM Semiconductor egyik kodekjét. Emellett számos olyan tippet és trükköt is bemutat egy kodek hangolásával kapcsolatban, amelyek segítségével a fejlesztők felgyorsíthatják a hanglejátszási alkalmazások fejlesztését, javítva egyidejűleg a rendszer általános hangminőségét is.

Általános tudnivalók a hangszórók frekvenciaválasz jellemzőjéről

A „Visszajelző hangfájlok lejátszása megfelelően kiválasztott audiokodekkel és mikrovezérlővel beágyazott rendszereknél” című cikk egy megfelelő kodek kiválasztásával és annak egy rendszerbe történő beépítésével kapcsolatos alapvető tudnivalókról szól. A következő lépés ezután az, hogy hogyan hozzunk létre a lehető legjobb hangkimenetet ezzel a kodekkel.

Hogy a rendszerből kijövő hang hogyan fog szólni, függ számos különböző tényezőtől, többek között:

  • a hangszóró házától;
  • a hangszóró rögzítésének módjától;
  • a reprodukálni kívánt hangfrekvenciáktól;
  • a hangszóró frekvenciaválaszától.

Ezen tényezők alapos átgondolása után a fejlesztő hamar rájön, hogy egy hangrendszer behangolásának igazából csak azt követően van értelme, ha az már a végleges legyártott állapotban van. Az persze igaz, hogy a rendszer paraméterei egy házon kívüli be nem szerelt nyomtatott áramköri lap (NyÁK-on) és hangszóró esetében is állíthatók, de nem szabad elvárni, hogy ugyanazok a hangolási paraméterek akkor is érvényesek lesznek, ha a hangszóró már rögzítve, és a saját házán belül van.

Ha a mechanikai felépítéssel foglalkozó mérnöki csapat megfelelően megtervezte a rendszer burkolatát és rögzítését, akkor a fejlesztőnek legfőképpen a hangszóró frekvenciaválaszára kell odafigyelnie, mint a legfontosabb jellemzőre. Minden hangszóró más-más jellemzőkel és jelleggörbékkel rendelkezik. Gyakran még az azonos cikkszámú hangszórók frekvenciaválasza is kis mértékben eltér egymástól, de a gyártó általában megad egy tipikus frekvenciaválasz-görbét. Az 1. ábrán például egy CUI Devices gyártmányú GC0401K 8 Ω-os, 1 W-os hangszóró frekvenciaválasz-görbéje látható. A GC0401K-t névlegesen a 390 Hz és 20 kHz közötti frekvenciák reprodukálására tervezték.

Kép – a CUI Devices GC0401K jelű 8 Ω-os, 1 W-os hangszóró frekvenciaválasza1. ábra: A CUI Devices GC0401K 8 Ω-os, 1 W-os hangszóróját 390 Hz és 20 kHz közötti frekvenciákra tervezték. (Kép: CUI Devices)

A hangszórók névleges értékeként jellemzően a frekvenciaválasz-görbe viszonylag lapos tartományát adják meg. Az 1. ábra megvizsgálásakor látható, hogy a GC0401K frekvenciaválasza kb. 350 Hz-nél kezd lapossá válni, és legalább 9 kHz-ig viszonylag lapos marad. A magas frekvenciáknál van némi esés, de a válasz 20 kHz-ig még mindig stabil.

A CUI Devices GF0668 jelű hangszórójának frekvenciaválasza eltér ettől (2. ábra). Ez a hangszóró egy kicsit nagyobb, és 3 watt teljesítményre képes. Névleges frekvenciaválaszként a 240 Hz és 20 kHz közötti tartományt határozták meg. A GC0401K-tól eltérően ez a hangszóró valamivel alacsonyabb frekvenciák reprodukálására is képes, de ismét megjegyezzük, hogy a megadott tartományon belül a görbe, néhány hullámvölggyel és csúccsal elegyítve viszonylag lapos.

Kép – a CUI Devices GF0668 8 Ω-os, 3 W-os hangszóró frekvenciaválasza (kattintson a nagyításhoz)2. ábra: A CUI Devices GF0668 8 Ω-os, 3 W-os hangszórójának frekvenciaválaszából kiderül, hogy névleges értékként miért a 240 Hz és 30 kHz közötti tartományt adták meg. (Kép: CUI Devices)

Utolsóként érdemes megnézni a Soberton Inc. SP-2804Y hangszórójának válaszgörbéjét (3. ábra). Az SP-2804Y egy 500 mW-os hangszóró, 600 Hz és 8 kHz közötti frekvenciaválasszal. A fizika törvényeinek megfelelően minél kisebb egy hangszóró, annál nehezebben képes az alacsonyabb frekvenciák reprodukálására. Ez annyit jelent, hogy ha a fejlesztők nem szűrik ki az alacsonyabb frekvenciákat, hanem azokat megpróbálják ezekkel a hangszórókkal visszaadni, az egyébként kristálytiszta hangok helyett az eredmény valamilyen torz zaj vagy hibás hangzás lehet.

Vegyük észre, hogy a frekvenciaválasz görbéjén jelentős esés tapasztalható 10 kHz körül. Ezért határozták meg 8 kHz-ben a hangszóró maximális névleges jellemzőjét, bár az bizonyos alkalmazásokban valószínűleg akár 20 kHz-ig is használható.

Kép – a Soberton Inc. SP-2804Y 8 Ω-os, 0,5 W-os hangszóró frekvenciaválasza (kattintson a nagyításhoz)3. ábra: A Soberton Inc. SP-2804Y 8 Ω-os, 0,5 W-os hangszórójának frekvenciaválaszából látható, hogy névlegesen a 600 Hz és 8 kHz közötti frekvenciákhoz alkalmas. 10 kHz után a görbén egy völgy látható, de bizonyos alkalmazásoknál még mindig 20 kHz-ig is használható. (Kép: CUI Devices)

Ha megnézzük az egyes hangszórók frekvenciaválaszát, egyértelmű, hogy valamilyen szűrésre és beállításra van szükség, mivel vannak olyan frekvenciák, amelyeken egy adott hangszórót nem ajánlatos működtetni. Ha például egy 4 Hz-es basszushangot kísérelnénk meg reprodukálni ezeken a hangszórókon, az hosszan tartó rezgéseket okozhat, amelyekre magasabb frekvenciák telepedhetnek, ami jelentős hangtorzulást eredményezhet.

A digitális audio szűrőblokkok felépítése

A múltban a nem kívánt frekvenciák kiszűrésére használt egyik módszer a hangszórók elé helyezett hardveres szűrők beépítése volt. Egy 500 Hz-es felüláteresztő szűrővel például az 500 Hz alatti frekvenciáknak a hangszóróhoz való eljutása teljes mértékben megakadályozható. Másrészről, egy aluláteresztő szűrővel a 15 kHz feletti frekvenciák távolíthatók el teljes mértékben. A felhasználói tapasztalatok azt mutatják, hogy néha, ha egy női hangot próbálnak meg reprodukálni egy magas frekvenciákon jó tulajdonságokkal rendelkező kisméretű hangszóróval, akkor abból nagyfrekvenciás búgás hallatszódhat. A frekvenciák gondos megválasztásával ezek a torzítások kiküszöbölhetők, és tisztább hangzás hozható létre.

Bár külső hardveres szűrőkkel ez megoldható, mégis többletköltséggel jár, valamint gondolni kell az elhelyezésükre is, amihez további helyre van szükség. Ezen okokból kifolyólag praktikusabb és hatékonyabb a hang minőségét az audiokodekbe épített digitális szűrőblokk segítségével állítani.

Példaként láthatjuk az AKM Semiconductor AK4637 jelű 24 bites audiokodek blokkvázlatát, amelyen a digitális szűrőblokk kiemelten látható (4. ábra).

Kép – az AKM Semiconductor AK4637 jelű terméke egy monó hangszórókimenettel rendelkező audiokodek (kattintson a nagyításhoz)4. ábra: Az AK4637 egy monó hangszórókimenettel, valamint hanglejátszási és felvételi funkciókkal rendelkező audiokodek. Tartalmaz egy belső audio blokkot is, amely a bejövő és a kimenő jel szűrésére használható a hanghűség javítása érdekében. (Kép: AKM Semiconductor)

Ez a digitális szűrőblokk több különböző szűrési funkciót tartalmaz, amelyek a következők:

  • egy felüláteresztő szűrőt (HPF2);
  • egy aluláteresztő szűrőt (LPF);
  • egy négysávos ekvalizátort (4-Band EQ);
  • automatikus kiegyenlítést (ALC – automatic leveling control);
  • egy egysávos ekvalizátort (1Band EQ).

Nem szükséges ezen funkciók mindegyikét engedélyezni. A fejlesztők kiválaszthatják, hogy melyekre van szükségük, és engedélyezhetik vagy letilthatják az adott blokkot, illetve megválaszthatják, hogy a mikrofonból érkező vagy lejátszott hangjelet átvezetik-e rajtuk keresztül vagy sem. Az igazi kérdés ezen a ponton az, hogy hogyan kell kiszámítani a megfelelő paramétereket és beprogramozni az audio kodeket.

A digitális szűrő paramétereinek kiszámítása és programozása

A legtöbb audioalkalmazásban az alacsonyabb frekvenciák eltávolítására egy felüláteresztő szűrőt, míg a magasabb frekvenciák esetében erre egy aluláteresztő szűrőt használnak. A frekvenciaválasz görbéje egy ekvalizátorral kisimítható vagy pedig segítségével bizonyos hangok kiemelhetők. Hogy pontosan hogyan kell ezeket a paramétereket beállítani, az túllép ezen cikk keretein. Ehelyett, az AKM AK4637 példáján keresztül megvizsgáljuk, hogyan kell kiszámítani és beprogramozni az ezekhez a paraméterekhez tartozó értékeket.

Első lépésként mindig jó ötlet áttanulmányozni az adatlapot. Esetünkben a kodek működésének megértéséhez feltétlenül szükséges regisztertáblázatot megtalálhatjuk a 7. és 8. oldalon. Ez első pillantásra elrettentő lehet, mivel az alkatrésznek 63 regisztere van, de ezek közül azonban sok a digitális audio blokk vezérlésére szolgál. Például a 0x22-től 0x3F-ig terjedő regiszterek vezérlik az ekvalizátort. A 0x19-től 0x1C-ig terjedő regiszterek vezérlik a felüláteresztő, míg a 0x1D-től 0x20-ig terjedő regiszterek az aluláteresztő szűrőt.

A fejlesztők számára általában nem adott a lehetőség, hogy egy tetszőleges frekvenciát programozzanak be a kodekbe, hanem ehelyett egy szűrőegyenlet segítségével számítják ki a szűrési együtthatókat, amelyeket azután beprogramoznak a kodek regisztereibe a kívánt frekvencián történő szűrés létrehozásához. Ha például a digitális szűrőblokk segítségével egy 600 Hz-es felüláteresztő szűrőt szeretnének létrehozni, akkor az 1. egyenletet kell használni:

Kép – egy felüláteresztő szűrő együtthatóinak kiszámításához szükséges egyenletek5. ábra: Az ábrán az AK4637 digitális szűrőblokkal megvalósított felüláteresztő szűrő együtthatóinak kiszámításához szükséges egyenletek láthatók. (Kép: AKM Semiconductor)

A fejlesztőnek meg kell határoznia a kívánt vágási frekvenciát (fc), ami ebben az esetben 600 Hz. A hangnál alkalmazott mintavételezési frekvencia (fs) jellemzően 48 kHz, de ez az alkalmazástól függően változhat. Ezeket az értékeket ezután be kell helyettesíteni az A és B együtthatók kiszámítására szolgáló egyenletekbe, amelyek ezután a rendszer beindításakor I2C-n keresztül beíródnak a kodek regisztereibe. Ugyanígy kell eljárni az aluláteresztő szűrők és a digitális blokk más funkciói esetében is, bár az átviteli függvények gyakran eltérőek, így (az adatlappal konzultálva) mindegyikük esetében saját egyenletkészletet kell használni.

Tippek és trükkök az audiokodekek hangolásakor

Az audiokodekekben található digitális szűrőblokkok gyakran igen rugalmasak és sokra képesek. Még egy olcsó audiokodek is rendelkezik olyan eszközökkel, amelyek lehetővé teszik a fejlesztők számára a nagyfokú természethűségű hang előállítását. Végső soron azonban az audiokodek csak egyetlen kis darab az egészből, és azok megfelelő beprogramozásához a fejlesztőknek számos tippet és trükköt kell figyelembe venni, ilyenek például:

  • Meg kell győződni arról, hogy a hangszóró az alkalmazásnak megfelelő házba van beszerelve. Egy nem megfelelően megtervezett hangszóródoboz könnyen tönkretehet egy egyébként tökéletes lejátszórendszert.
  • Az audio szűrő blokkjait nem kell behangolni addig, amíg a rendszer nincs teljesen összeszerelve a gyártási végállapotban. Ellenkező esetben a megfelelő hangot eredményező hangolási paraméterek módosulhatnak.
  • A frekvenciatartományt a tervezett reprodukálandó hang alapján szükséges kiválasztani. Például egy gitár, egy zongora vagy egy beszédhang esetében a frekvenciabeállítások mind különbözőek lesznek.
  • A digitális kiegyenlítő blokk segítségével kell kompenzálni a hangszóró frekvenciaválaszát. Egyes frekvenciák természetesen hangosabban és tisztábban fognak szólni, és lehet, hogy csillapítani kell őket, ellentétben másokkal, amelyeket erősíteni kell.
  • A rendszer által adott frekvenciaválaszt teszthangokkal kell kiértékelni. Egy egyszerű internetes kereséssel több olyan legkülönbözőbb hangot tartalmazó mp3-fájlt is találni lehet, amelyek segítségével fel lehet térképezni egy audio lejátszó rendszer frekvenciaválaszát, és le lehet ellenőrizni a digitális szűrőblokk megfelelő működését.
  • A szűrőblokk konfigurációs beállításait flash vagy EEPROM memóriában kell tárolni, hogy azokat a gyártás során tetszés szerint módosítani lehessen a rendszerenkénti eltérések figyelembevételével (ha ez fontos).

Az ezeket a „tippeket és trükköket” megfogadó fejlesztők sok időt meg fognak spórolni, és sokkal kevesebb keserűségben lesz részük hanglejátszó rendszerük behangolásakor, valamint bizonyosak lehetnek afelől, hogy termékük a kívánt hangjellemzőkkel fog majd a piacra kerülni.

Összegzés

Ha egy beágyazott rendszerhez audiokodeket adunk hozzá, az még nem garantálja azt, hogy az a végfelhasználónál is majd megfelelő hangzást produkál. Minden hanglejátszó rendszert gondosan be kell hangolni, amihez külső szűrők is használhatók, de az audiokodekek már rendelkeznek beépített digitális szűrési és kiegyenlítési képességekkel. Amint azt bemutattuk, ezek segítségével megvalósítható, hogy csak azok a frekvenciák jussanak el a hangszóróhoz, amelyek reprodukálására az a leginkább alkalmas. Gondos elemzéssel és szűrési beállítások alkalmazásával a fejlesztők olyan tiszta hangzást hozhatnak létre, amelyet a végfelhasználók mára már magától értetődően elvárnak a készülékeiktől.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors