Ses kaydı ve kablosuz internet üzerinden kayıtlara erişim?

Başlatan Erhan YILMAZ, 07 Ekim 2013, 21:20:11

Erhan YILMAZ

Merhabalar, tasarlamam gereken bir sistem ile ilgili tavsiyelere ihtiyacım var. Sistemi ana hatlarıyla iki parçaya ayırabiliriz. İlk olarak mikrofondan ses kaydı yapılıp tercihen mp3 formatında yada wav gibi daha basit formatlarda sd karta kaydetme işlemi yapılacak. Yapılan bu kayıtlarda sd kart içerisinde duracak. Sistemin birde wireless modülü olacak. Her hangi bir pc üzerinden wireless ile sisteme bağlanıp bu kayıtlara erişmem, indirmem, dinlemem v.s. gerek. Tabi bu işlemler ne kadar hızlı olursa o kadar iyi olur. Bu sistemi nasıl tasarlarım? Önerebileceğiniz geliştirme kiti v.s. var mı? Hazır soc çözümler var mı? Ses kayıt işlemini bir dsp ile halledebilirim gibi görünüyor. Hatta TI'nin dsp kitlerinde örnek uygulamalar var. Kayıtların wireless üzerinden aktarımı nasıl olacak? Yanlış bilmiyorsam FTP server uygulaması yapmam gerekiyor? Kullanıcı uzaktan bağlanıp sd kart üzerindeki dosyalara ulaşacak. Sd kartı FTP server olarak nasıl kullanırım? En önemlisi bu işlemlerin hepsini tek bir mikrodenetleyici, dsp yada soc ile halledebilir miyim?

leblebitozu

Değişik çözümler bulunabilir;

FTP server micro üzerinde de gerçekleştirilebilir ama PC tarafında yapmak daha kolay ve hızlı olur, ya da socket bağlantısı üzerinde FTP ye falan ihtiyaç olmadan veri stream edilebilir;

1. VS1063 gibi bir MP3 encoder çipi + STM32 + WIFI modül

2. MP3 gerekli değil ise speex gibi daha basit bir protocol kullanılabilir (internette örnekler bulunabilir) microchip'in sitesinde de encoder/decoder örnekleri olması lazım mikroişlemci ile encode/decode yapılabilir + WIFI modül

3.  Aşağıdaki linkteki gibi bir linux board (audio in/audio out desteği var) + usb WIFI.

https://www.olimex.com/Products/OLinuXino/iMX233/iMX233-OLinuXino-NANO/open-source-hardware


Erhan YILMAZ

Hocam ftp server benim aklıma geldi. Asıl amaç pc tarafında bir yazılım ile wirelessten sisteme bağlanıp. Kayıtları pcye indirebilmek. Daha uygun, kolay bir çözüm varsa tercih ederim tabi ki.

VS1063 çipi tam olarak ne iş yapıyor? Enerji verince mikrofondan aldığı sesleri kaydedip mp3 kodlayıp stream olarak yolluyor mu? Mp3 olarak yolluyorsa dosya header bilgilerini falan nasıl hallediyor. Bunu kullansam stream olarak gelen bilgileri hızlı bir şekilde(muhtemelen dma ile) alıp sd karta yazmam mı gerekiyor?

Kayıt boyutu küçük olsun diye mp3 olarak ben düşündüm. İstenen 8 veya 16 khz'de örneklenmiş mono mikrofon kaydı. Çözünürlük 16 bit yeterli olur heralde. Wireless üzerinden gönderileceği ve sd karta depolanacağı için boyut önemli hocam ne kadar küçük olursa o kadar iyi olur. Uygulamaya özgü bir çözüm olması daha iyi olur sigara paketi kadar taşınabilir bir cihaz olması planlanıyor. Güç tüketimi de önemli. Piyasadaki wifi modüllerin veri aktarım hızı nedir? Uarttan haberleşiyor bildiğim kadarıyla çoğu. Hızlı bi aktarım yapmak gerekiyor. Tam belli değil ama cihaz 200-300 saat kayıt yapabilir kapasite de olacak. Veriyi depolamak kadar hızlı bir şekilde göndermekte önemli hocam. 5-10 dk içinde aktarım tamamlanmalı.

Ses kayıt işlemi bu http://www.ti.com/tool/430boost-c55audio1 veya bu http://www.ti.com/tool/tmdx5535ezdsp kit ile yapılır gibi görünüyor. Zaten kayıt yapılırken gönderme işlemi yapılmayacak real time bir durum yok yani. Sd kartı anahtarlamalı kullanıp başka bir denetleyici ile de sd karttan alınan veriler wifi'den gönderilemez mi? Gereksiz mi olur?

mesaj birleştirme:: 07 Ekim 2013, 23:28:15

Örneğin wav olsa 8k sample 16 bit 300 saat için 16 gb küsür yer tutuyor(yanlış hesaplamadıysam). SD kart 16 gb olabilir bu sorun değil ama bu 16 gb 5-10 dk içinde kablosuz gönderilebilir mi?

t2

Sesi iletmek için mp3 veya başka bir biçime çevirmek dosyayı komple iletmek mümkün. Eğer sürekli kayıt gerekiyorsa kaydı canlı olarak iletmek yerine parçalar olarak göndermek yerinde olacaktır. zaten istesende mp3 oalrak canlı iletemezsin.  çünkü diyelim mp3 10dabir ebatında sıkıştırılıyor. daha ses oluşmadı neyi ileteceksin? diye bir durum ortaya çıkar. Fakat bir kaç saniyelik buffer olur. canlı sesi periyodik olarak paketler mp3 dosyaya ekler.  Diyelim 1 saat kayıt doldu. mp3 dosyayı  kapatır. format, boyut vb bilgilerini yerli yerince ayarlar. 
Sesi sabit süreli tarih saat vs içeren mp3 dosyalar halinde depolamak sonra göndermek uygun gibi.


1 saat süre uzun mu? ozaman daha kısa mp3 seçilebilir. aslında bana kalırsa mp3 bu iş için gereksiz ve anlamsızdır. sesi kaydedip beğendiğiniz bir algoritma ile sıkıştırdınız diyelim ses1.dat ses2.dat olsun. bunların formatını biliyorsanız karşı tarafta wav dosya haline getirebilir çalabilirsiniz. elbette mp3e de çevirebilirsiniz.

Müzik kalitesi gerekli değilse, konuşma sesleri için ADPCM formatı önerilir. 4te bir  sıkıştırma sağlar. bunu işlemci ile yapmak kolaydır. atmel, pic,  gibi popüler işlemcilerin hazır örnekleri vardır.

Sesi bulunduğu yerde adpcm olarak wav dosyaya kaydetmek, sonra işi biten dosyaları ftp ile göndermek uygundur.

Mikrofondan ADPCM formatlı wav dosya güzelce nasıl kaydedilir?  başlangıç için güzel bir nokta.



leblebitozu

VS1063'ün register'ları aracılığıyla bu işleri hallediyorsun, header'ları falan kendi oluşturuyor direk SD karta da yazabiliyor hatta,
Burdan inceleyebilirsin;

http://www.vlsi.fi/en/support/evaluationboards/vs10xxprotoboard.html

ama kibrit kutusu kadar boyutta 200-300 saat kayıt zamanı oldukça fazla, sadece insan sesi için mp3 lüx kaçar bence speex gibi daha basit bir codec işlemci ile uygulanabilir 200 saat kayıt 8kbit/sn aşağı yukarı 700-800 mb tutar, uart'tan çalışan bir wifi modül ile 5-10 dakika zor, spi yada benzeri bir interface destekleyen hızlı bir modül bulman gerekir, aşağıdaki gibi bişey olabilir araştırmak lazım;

http://www.gainspan.com/products/gs2100m

Hepsine çözüm var velakin pil meselesi nasıl hallolur hesap kitap yapmak lazım, malum wifi modül ciddi akım çekiyor.

Erhan YILMAZ

Sağolun gerçekten aydınlatıcı cevaplar.
Bende öyle düşündüm aslında. Sd kartta her güne ait klasör açılıp içerisine 1 saat yarım saat şeklinde kayıtlar yapmak daha makul gibi. Sıkıştırma yöntemlerini pek incelemedim mp3 en bilindik olan diye mp3 dedim. Speex kaç kata kadar sıkıştırıyor? Lükse kaçar derken neyi kastettiniz? İşlem gücümü çok gerekir?

700-800mb dediğiniz speex için mi geçerli hocam? mp3 ile sıkıştırsak ne kadar tutar? Dediğiniz gibi speex daha iyi olabilir hatta pc ortamında playerda buldum. Yani pc tarafında dinleme de sıkıntı olmaz ama vs1063 çipi çok kolaylık sağlıyor. Örnek vermek gerekirse vs1063 çipini kullansam o kendi kayıtları yapsa sd karta yazsa bende bi stm32 ile sdio modülü üzerinden chan'ın falan fat kütüphanelerini kullanıp dosyaları okuyup hızlı bir şekilde bahsettiğiniz spi'dan haberleşen modüller üzerinden yollasam iyi olur gibi göründü gözüme? Yada speex ile sıkıştırıp sd karta yazan VLSI'in başka bir çözümü var mı? Yada başka bir firmaya ait böyle bir çözüm? Birde yanlış mı anladım hocam? Vs1063'ü istediğimiz şekilde konfigüre edebiliyor muyuz? Yani al şu sd karta 1 saatlik mp3ler (yada farklı sürelerde) halinde mikrofondan kayıt yap diyebiliyor muyuz? Dosya isimlendirmesi, klasörleme falan nasıl yapılıyor? Bu algoritmaları işlemcide koşturmak yerine firmaların ürettiği hazır çipleri alıp kullanmak daha güvenli ve kolay değil mi? Amacım en kısa sürede prototip elde etmek.

Birde işi biten dosyaları ftp üzerinden indirilmesini sağlamak istesem stm'nin ethernet modüllü denetleyicileri iş görür mü? Sıfır bilgiyle(ftp hakkında) bu işe girsem ne kadar zamanda sonuç alırım. Yada hiç bulaşmadan daha kolay bir transfer yöntemi var mı? Yoksa ham olarak verileri göndereyim mi ne yapayım?

Wifi modül sadece veri gönderilirken açık tutulacak mesela 1 saat. Onun dışında kapalı kalacak. Asıl önemli olan kayıt yapan çipin güç tüketimi.

Bu şartlar göz önünde bulundurulunca pil olarak  piyasadaki 1-2 amperlik (4x6 cm falan) li-lon telefon pilleri iş görmez mi? Onun üstüne de benzer boyutlarda 2-3 kat bir pcb. Muhtemelen codec+controller 2 tane çip olur. Bir micro sd kart slot birde wifi modül olur. Bunların hepsi altlı üstlü yerleştirilmez mi? Diğer ıvır zıvır malzemelerde pcb'nin muhtelif yerlerine serpiştirilemez mi? :)

Biraz çok soru sordum saygı değer üstatlar verebildiğiniz kadar cevap verirseniz sevinirim. :)

t2


Erhan YILMAZ

Yani öylede denebilir. Uygulamaya özgü spesifik bir cihaz olacak olursa.

leblebitozu

700-800mb speex için geçerli evet saniyede 1 kilobayt gibi düşün, VS1063 kolay olur tabi ama mp3 ses için daha çok yer tutar, speex ya da  benzeri bir format ses kaydı için daha uygun. Microchip'in sitesinde library olarak bulabilirsin dsPic,pic32 desteği falan da var, demoları inceleyebilirsin.STM32 için de gördüm daha önce ama bakmam lazım, nerde olduğunu şu an hatırlamıyorum. Ethernet modüllü mikro'ya ihtiyaç yok çünkü sen wifi modül üzerinden haberleşeceksin wifi modül'de tcp/ip stack gömülü ise AT komutlarıyla olur bu muhtelemen, FTP'ye falan gerek yok "TCP/IP socket" şeklinde biraz araştırırsan bilgi edinebilirsin. Socket üzerinden "ip adresi + port" kullanarak veri aktarımı yapabilirsin. En hızlı şekli de bu olur. SDIO destekleyen bir mikro olursa sd karta hızlı erişmek adına daha iyi olur. WIFI modül erişime açık olması gerektiği için sürekli açık olmak zorunda, ya da belirli zaman aralığında aç/kapa yapabilirsin uygulamaya göre.

Erhan YILMAZ

Anladım hocam şuan speex ile mp3 arasında kararsız kaldım. Speex çok uğraştırır ise vs1063 gibi bir çözüm ile uğraşmayı düşünüyorum. Ethernetli diye yanlış söyledim. Dediğiniz gibi TCP/IP stack olan modül varsa daha iyi olur. Kayıt işlemini halledersem sonrasında wifi kısmına yönelirim. VS1063 kaydettiği dosyaları nasıl isimlendiriyor hocam bilginiz var mı? Yada süresini neye göre belirliyor? Konfigüre edilebiliyor mu?

pisayisi

STM32 lerde speex codec ve uip kullanarak benzer tcp tabanlı uygulamalar gözüme çarpmıştı bir inceleni öneririm...
Murat

Erhan YILMAZ

Alıntı yapılan: pisayisi - 08 Ekim 2013, 19:25:42
STM32 lerde speex codec ve uip kullanarak benzer tcp tabanlı uygulamalar gözüme çarpmıştı bir inceleni öneririm...

Uygulama notu olarak mı var? Bağlantı var mı hocam?


leblebitozu

@Erhan Yılmaz

Evet konfigüre edilebiliyor, player ve recorder (micro + vs1063) kodu'nu ekteki linkte bulabilirsin; sd card yazma işlemleri micro tarafında hallediliyor bu source'ta;

http://www.vlsi.fi/fileadmin/app_notes/vs1063an_playrec.zip

pisayisi

stm32f4 discovery kit için usb hafızaya ses kaydı yapan aşağıdaki uygulama notu işine yarayabilir. Aynı zamanda uip web server uygulaması ile de kayıt ettiğin dosyayı web üzerinden paylaşabilirsin...

http://andybrown.me.uk/wk/2013/07/14/stm32plusnet/

http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00040802.pdf
Murat