Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov

Jozef Hamar

Pekný deň prajem,

rád by som niekoho poprosil o radu, ako čo najrozumnejšie spracúvať viac zvukových vstupov/výstupov na nejakom malom HW typu Raspberry Pi (R Pi však nie je podmienka, môže sa jednať aj o niečo podobné). Potrebujem spracovať cca 8-10 mono kanálových vstupov bez akéhokoľvek predsadeného zmiešavača, t.j. softvér potrebuje vedieť, cez ktorý vstup (mikrofón) prijal ktorý signál. Veľmi predbežný návrh počíta s multithreading aplikáciou, kde bude ku každému mikrofónu priradené jedno vlákno. Súčasne potrebujem vedieť posielať zvukový stereo signál na konkrétny výstup.

Zatiaľ som si problém rozdelil na 2 časti:
 - zohnať/identifikovať HW, ktorý to zvládne,
 - naprogramovať to.

Momentálne riešim prvú časť. Nehľadám Hi-Fi riešenie, ani audiofilnú skladačku. Neplánujem profesionálne ozvučovanie, bude sa jednať o systém nasadený v domácnosti. Veľmi rád by som to pripojil k niečomu malému, preto ten Rasberry Pi v úvode. S Linuxom si poradím, programovania sa nebojím.

Verím, že tu už niekto niečo podobné v minulosti riešil. Akákoľvek rada je vítaná, doplňujúce otázky rád zodpoviem.

Ďakujem,

Jozef


dustin

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #1 kdy: 17. 11. 2017, 18:53:10 »
Poběží nahrávání/přehrávání kontinuelně, nebo se bude přerušovat? Jde o synchronizaci vstupních a výstupních streamů - po delší době se streamy rozjedou, když vstup budou časovat jiné hodiny než výstup (klasický problém propojení nezávislých časových domén).

Pokud poběží v kuse jen v řádu hodin, není potřeba synchronizaci řešit (hodiny se nerozjednou o tolik, aby to nepokryl rozumný buffer). Pak můžeš použít několik USB zvukovek. Třeba ty nejlevnější  za 15Kč z Číny mají dva vstupy a dva výstupy - stačily by 4. 8 kanálů tam a zpět 48/16 dělá přes 12Mbps celkový datový tok, to jeden řadič na USB1 nedá. Chce to alespoň dva řadiče, což se obávám dostává ze hry RPi.

Osobně bych se podíval na tenké x86 klienty, mám s nimi ty nejlepší zkušenosti. Spotřeba kolem 10W, od  20EUR vč. dopravy repasy z ebay.de, gigabit síťovka, min. 3 plnohodnotné USB řadiče, často dvoujádro, systém na CF nebo mSATA kartě, kvalitní značkové adaptéry. Mají i SATA/PCI/PCIe porty, ale to asi nevyužiješ. Jako OS používám Voyage linux, který má kořenový filesystém read-only, takže neopotřebovává flešdisky.

Konkrétní zkušenosti mám s FS Futro 400, 450, 500, 550, 900 a HP T5740. Porovnání/detaily najdeš na http://www.parkytowers.me.uk/thin/ , cena na ebay.de , doporučuji lokální dopravu po Německu zdarma a pak dopravce typu mailboxde.cz . Za pár euro koupíš kvalitní značkové železo, které vydrží 24/7 spoustu let.

djbobr

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #2 kdy: 17. 11. 2017, 21:40:34 »
Pozor, laciné čínské zvukovky, přestože mají line-in vstup, jsou pro vstup pouze jednokanálové. Hranice je cca USD 20-30, kdy začínají mít 2 kanály na vstup.
Já tak dlouho experimentoval, až jsem si postavil USB zvukovku na základě referenčního zapojení PCM2900 z datasheetu a vyšlo to na stokorunu. Stereo vstup, stereo výstup, v Linuxu bez problémů (provozuju na tom Stereo Tool realtime processing)
Víc zvukovek by asi šlo synchronizovat tím, že se do všech PCM2900 přivede společný hodinový signál (ne každá zvukovka svůj krystal, ale jeden společný oscilátor a rozdistribuovat do všech instancí PCM2900)

dustin

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #3 kdy: 17. 11. 2017, 22:26:00 »
Pokud má mikrofon jen mono (což u levných zvukovek dává smysl a ty nemají modrý line-in, ale jen červený mikrofonní vstup), pak může použít zvukovek klidně osm či deset, jsou skoro zadarmo. Line-in zvukovky určitě stereo umí např. https://www.ebay.com/itm/External-Sound-Card-USB-6-Channel-5-1-Audio-S-PDIF-Optical-Sound-Card-For-S6L0/302445534712 , mám ji. Ale to není mikrofonní vstup, o kterých mluvil Jozef.

Ta synchronizace hodin společnými hodinami funguje u současného nahrávání z více zvukovek. Pokud by chtěl dlouhodobým streamem nahrávat  a přehrávat, na levných usb zvukovkách to nezasynchronizuje, protože capture jsou hodiny v USB audiočipu (třeba ten PCM2900) - usb asynchronous IN,  ale playback jsou hodiny USB řadiče v PC - usb adaptive OUT. Ale pro kratší úseky se to nerozjede tak, aby to buffer nepobral (samozřejmě pokud ještě navíc nebude vyžadovat minimální latenci, tedy minimální buffery).

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #4 kdy: 17. 11. 2017, 22:53:24 »
Je hezke, ze tady tak pekne resite synchronizaci. Ted je jeste otazka, jestli ji resi i tazatel. Neni totiz vubec jasne, na co to chce.


Jozef Hamar

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #5 kdy: 17. 11. 2017, 23:41:02 »
Ďakujem za odpovede.

Vstupy: všetky vstupy budú mono mikrofóny, a budú zaznamenávať hlasové povely, ktoré bude SW ďalej spracovávať a vyhodnocovať. V podstate kontinuálny stream, ale nerobí mi problém to každú hodinu reštartnúť.

Výstupy: Ad-hoc. V podstate prehrávanie hudby, občas nejaké hlásenia. Opäť však platí, že sa vôbec nič nestane, ak sa to z času na čas reštartne.

Vstupy a výstupy sú nezávislé. To, čo príde na vstup, len nepriamo ovplyvňuje výstup (cez SW). Určite nebudem potrebovať vstup nejakého mikrofónu presmerovať priamo na niektorý z výstupných kanálov.

Môžete mi, prosím, technicky viac priblížiť spomínaný problém synchronizácie?

Taktiež som dávnejšie čítal (a vlastne to je hlavný dôvod, prečo hľadám špeciálny HW), že aj keď k systému pripojím viac zvukových kariet, systém má problém vidieť všetky vstupy súčasne. Ak toto nie je pravda, v tom prípade si myslím, že môj problém je naozaj vyriešený lacnými čínskymi zvukovkami.

Ďakujem.

Jenda

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #6 kdy: 18. 11. 2017, 03:36:54 »
Môžete mi, prosím, technicky viac priblížiť spomínaný problém synchronizácie?

Jde o to, že když si koupíš tři zvukovky s udávaným samplerate 48000 Hz, dvěma budeš nahrávat a třetí přehrávat, tak zjistíš, že ty dvě nahrávací samplují na 47995 a 48006 Hz a ta přehrávací přehrává na 48002 Hz. Pokud bys měl např. jednoduchý algoritmus mixující dva vstupy:

Kód: [Vybrat]
while True:
  přečti 1000 samplů z 1. zvukovky
  přečti 1000 samplů z 2. zvukovky
  sečti je
  přehraj výsledek na 3. zvukovce
tak se ti to po nějaké době (podle velikosti bufferu minuty až hodiny) rozbije.

Nicméně ve tvém případě se ukazuje, že to nevadí.

Šel bych tou cestou více USB zvukovek. Pozor, některé šumí. Bohužel jsem nikdy nezkoušel připojovat k počítači víc než 2, ale nevidím důvod, proč by to nemělo fungovat i s více.

dustin

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #7 kdy: 18. 11. 2017, 10:11:39 »
Více zvukovek v alse funguje v pohodě, zkoušel jsem jich asi 6 najednou. U stejných USB zvukovek je potřeba je udevem  fixně identifikovat jménem dle pozice v USB portu - detaily viz https://alsa.opensrc.org/Udev

Jak jsem psal, určitě to nezvládne jeden port na RPi.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #8 kdy: 18. 11. 2017, 10:27:03 »
U stejných USB zvukovek je potřeba je udevem  fixně identifikovat jménem dle pozice v USB portu - detaily viz https://alsa.opensrc.org/Udev

USB zarizeni by mely mit unikatni identifikator, tak by bylo mozna lepsi udelat to podle nej. Bohuzel nekteri vyrobci jsou hovada a maji ho prazdny nebo u vsech stejny. Zalezi na tom, jak clovek nakoupi.

dustin

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #9 kdy: 18. 11. 2017, 11:26:43 »
Na jedinečné iSerial apod bych se u těch čínských zvukovek za 17 Kč i s dopravou opravdu nespoléhal.

Jozef Hamar

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #10 kdy: 18. 11. 2017, 16:37:16 »
Ďakujem, synchro problém je už jasný.

Čo sa RPi týka, niečo mi asi uniká. RPi ma predsa USB 2 radič, ktorý má teoretický, ale aj praktický limit nad spomínaných 12Mbps.

Na čo som zabudol?

Ďakujem.

MasoxCZ

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #11 kdy: 18. 11. 2017, 17:28:19 »
Jen drobnost ... levný USB zvukovky s čipy VIA (příklad AXAGON ADA-15 a ADA-25) polykají prvních cca 150ms zvuku. ADA-15 navíc na vstupu nepoužitelně šumí. ADA-25 stereo-in i -out) nešumí a má dokonce optický výstup přes TOSlink, ale musel bys dokoupit cca za 60 kaček redukci do 3,5mm jacku. Pod linuxem navíc nefungujou ovládací tlačítka hlasitosti a mutování mikrofonu a výstupu.
Dramaticky lepší, pokud ti stačí mono vstup, je zvukovka pro RasPi z PiMoroni (hlásí se jako Intel):
 (https://shop.pimoroni.com/collections/raspberry-pi-3-accessories/products/usb-soundcard).

Ještě chci testnout zvukovky od Behringeru; mají stereo dovnitř i ven, všechno na RCA konektorech, a údajně extrémně krátký zpoždění, což při použití např. u mixpultu docela hraje roli.

MasoxCZ

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #12 kdy: 18. 11. 2017, 17:31:40 »
Na jedinečné iSerial apod bych se u těch čínských zvukovek za 17 Kč i s dopravou opravdu nespoléhal.

kromě toho je i lepší to identifikovat podle pozice v portech, protože pak můžeš přiřadit zvukový trasy na konkrétní USB porty, a neřešit kam ti kterou zvukovku kdo přepojil a kam se tedy která trasa přestěhovala :-)

dustin

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #13 kdy: 18. 11. 2017, 18:46:30 »
Čo sa RPi týka, niečo mi asi uniká. RPi ma predsa USB 2 radič, ktorý má teoretický, ale aj praktický limit nad spomínaných 12Mbps.

To má, ale když zvukovky jedou jen v USB1 (což ty levné jedou), pak mají stejně jen na lince tuto celkovou kapacitu.

dustin

Re:Raspberry Pi HW pre spracovanie viacerých audio vstupov/výstupov
« Odpověď #14 kdy: 18. 11. 2017, 18:50:14 »
levný USB zvukovky s čipy VIA (příklad AXAGON ADA-15 a ADA-25) polykají prvních cca 150ms zvuku.

Zajímavé, máš k tomu nějaké blizší info? Nebylo to jen někde v nastavení?

Citace
Pod linuxem navíc nefungujou ovládací tlačítka hlasitosti a mutování mikrofonu a výstupu.

Tahle tlačítka bývají téměř vždy jen USB HID multimediální klávesy. Nebylo to jen o tom, že jsi je neměl v linuxu namapované na nějaké vhodné příkazy? Typicky to mají nastavená až pokročilejší desktopová prostředí.