Προς το περιεχόμενο

λήψη ήχου απο μικρόφωνο - C, Java ή Matlab?


NeuroN

Προτεινόμενες αναρτήσεις

Δημοσ.

Θέλω να κάνω ένα προγραμματάκι που να δέχεται ήχο απο μικρόφωνο

και να κάνω κάποια επεξεργασία on-the-fly, δλδ αμέσως με την λήψη του ήχου, πχ. να βρω συχνότητες κλπ.

Επίσης θα εμφανιζει καποια αποτελέσματα σε γραφικο περιβάλλον.

Σε ποιά γλώσσα μπορώ να το κάνω?

Γραφικο περιβαλον εχω κανει με java και μπορω να μαθω visual C για να κανω και με C αλλα δεν ξέρω κατα πόσο μπορω να επεξεργαστώ ήχο και ποσο εύκολο ειναι.

Το matlab μπορεί σίγουρα να κανει την επεξεργασία αλλα δεν ξέρω αν μπορεις να φτιάξεις standalone exe και με γραφικο περιβαλλον.

Επίσης αν ξέρει καποιος αν γίνεται με flash-actionscript ή με κάποια web γλώσσα επίσης θα βοηθούσε.

 

\m/

Δημοσ.

Θέλω να κάνω ένα προγραμματάκι που να δέχεται ήχο απο μικρόφωνο

και να κάνω κάποια επεξεργασία on-the-fly, δλδ αμέσως με την λήψη του ήχου, πχ. να βρω συχνότητες κλπ.

Επίσης θα εμφανιζει καποια αποτελέσματα σε γραφικο περιβάλλον.

Σε ποιά γλώσσα μπορώ να το κάνω?

Γραφικο περιβαλον εχω κανει με java και μπορω να μαθω visual C για να κανω και με C αλλα δεν ξέρω κατα πόσο μπορω να επεξεργαστώ ήχο και ποσο εύκολο ειναι.

Το matlab μπορεί σίγουρα να κανει την επεξεργασία αλλα δεν ξέρω αν μπορεις να φτιάξεις standalone exe και με γραφικο περιβαλλον.

Επίσης αν ξέρει καποιος αν γίνεται με flash-actionscript ή με κάποια web γλώσσα επίσης θα βοηθούσε.

 

\m/

 

Εγώ θα σου πρότεινα MATLAB για αυτό που περιγράφεις. Standalone με GUI μπορεις να φτιάξεις μια χαρά.

Δημοσ.

Θέλω να κάνω ένα προγραμματάκι που να δέχεται ήχο απο μικρόφωνο

και να κάνω κάποια επεξεργασία on-the-fly, δλδ αμέσως με την λήψη του ήχου, πχ. να βρω συχνότητες κλπ.

Επίσης θα εμφανιζει καποια αποτελέσματα σε γραφικο περιβάλλον.

Σε ποιά γλώσσα μπορώ να το κάνω?

Γραφικο περιβαλον εχω κανει με java και μπορω να μαθω visual C για να κανω και με C αλλα δεν ξέρω κατα πόσο μπορω να επεξεργαστώ ήχο και ποσο εύκολο ειναι.

Το matlab μπορεί σίγουρα να κανει την επεξεργασία αλλα δεν ξέρω αν μπορεις να φτιάξεις standalone exe και με γραφικο περιβαλλον.

Επίσης αν ξέρει καποιος αν γίνεται με flash-actionscript ή με κάποια web γλώσσα επίσης θα βοηθούσε.

 

\m/

 

 

Σε MATLAB είναι πολύ εύκολο.

 

Μπορείς να χρησιμοποιήσεις την wavrecord ή την recordblocking (η waverecord δεν δουλεύει σε MAC περιβάλλον)

 

Δες τι κάνουν με το help.

 

Στην wavrecord παίρνεις πίσω τα δεδομένα σε μία μεταβλητή, π.χ. inputData = wavrecord(duration, fs)

 

ενώ με την recordblocking παίρνεις πίσω τα δεδομένα ως εξής:

 

voice = audiorecorder(fs,nbits,channels)

 

recordblocking(voice, duration)

 

audiodata = getaudiodata(voice)

 

 

Μετά, μπορείς να πάρεις το συχνοτικό περιεχόμενο με μία απλή FFT (αναλόγως τα σημεία, παράθυρα κτλ κτλ κτλ)

 

Εμφάνιση με plot.

Δημοσ.

Για να φτιάξει gui και exe το matlab ενσωματώνει συναρτήσεις απο αλλες γλώσσες ή εχει δικές τις?

Και βγαίνει stand-alone ετσι? δεν χρειάζειται να εγκαταστησεις matlab compiler για να τρεξει.

Δημοσ.

Φτιάχνει executable αλλά στο σύστημά που θες να κάνει εγκατάστασή πρέπει να υπάρχουν οι βιβλιοθήκες της matlab. Προκυται για ένα αλλο exe, που πρέπει να μοιράσεις μαζί με την εφαρμογή. Είναι πολύ μεγάλο σε μέγεθος όμως...

  • 1 μήνα μετά...
Δημοσ.

Σε περίπτωση που ενδιαφέρει κάποιον,

ο πιο απλός κώδικας για capture απο mic και playback σε java είναι 200 γραμμές ακριβώς

το ίδιο πράγμα μπορείς να το κάνεις στη matlab με 2 κλήσεις μόνο <_< όπως είπε και ο φίλος Timonkaipumpa

>> rec = wavrecord(5*Fs,Fs,1,'int16');

>> wavplay(rec,Fs);

 

Timonkaipumpa ξέρεις τι μπορεί να φταίει που δεν μου τρέχει η recordblocking ?

Γενικά αν προσπαθήσω να κανω capture με αντικείμενο audiorecorder κολλάει το Matlab.

Κάνει σαν να εκτελει την εντολή αλλα δεν ολοκληρώνει ποτέ και το ctrl+c δε την κόβει.

Η πλάκα είναι οτι στις 10 φορές που το προσπάθησα μου έτρεξε κανονικά στις 2..

Δημοσ.

Φτιάχνει executable αλλά στο σύστημά που θες να κάνει εγκατάστασή πρέπει να υπάρχουν οι βιβλιοθήκες της matlab. Προκυται για ένα αλλο exe, που πρέπει να μοιράσεις μαζί με την εφαρμογή. Είναι πολύ μεγάλο σε μέγεθος όμως...

 

Αν και δεν ξερω matlab πιστευω πως ειναι οπως τα λες. Ισως χρειαστει να φτιαξει ενα setup το οποιο θα εγκαθιστα το exe μαζι με τις βιβλιοθηκες που χρειαζονται για να την ηχογραφηση κλπ. Ισως με το Molebox να μπορει να φτιαξει ενα stand alone exe που περιεχει και τις βιβλιοθηκες. Ενας αλλος τροπος για να κανει stand alone exe (χωρις χρηση Molebox) ειναι να χρησιμοποιησει μια γλωσσα (ισως και το matlab) που μπορει να κανει χρηση συναρτησεις απο το WinAPI, συγκεκριμενα απο το winmm.dll οποτε δεν θα χρειαζεται να εγκαταστησει καποιες extra βιβλιοθηκες για να ηχογραφησεις.

Δημοσ.

Σε περίπτωση που ενδιαφέρει κάποιον,

ο πιο απλός κώδικας για capture απο mic και playback σε java είναι 200 γραμμές ακριβώς

το ίδιο πράγμα μπορείς να το κάνεις στη matlab με 2 κλήσεις μόνο <_< όπως είπε και ο φίλος Timonkaipumpa

>> rec = wavrecord(5*Fs,Fs,1,'int16');

>> wavplay(rec,Fs);

 

Timonkaipumpa ξέρεις τι μπορεί να φταίει που δεν μου τρέχει η recordblocking ?

Γενικά αν προσπαθήσω να κανω capture με αντικείμενο audiorecorder κολλάει το Matlab.

Κάνει σαν να εκτελει την εντολή αλλα δεν ολοκληρώνει ποτέ και το ctrl+c δε την κόβει.

Η πλάκα είναι οτι στις 10 φορές που το προσπάθησα μου έτρεξε κανονικά στις 2..

 

 

 

 

 

 

πρέπει να είναι:

 

 

A = audiorecorder(fs, bits, channels);

 

Για την δημιουργία του αντικειμένου audiorecorder.

 

 

για την ηχογράφηση πρέπει να χρησιμοποιήσεις την record, π.χ.

 

record(A, length)

 

ή την recordblocking,

 

recordblocking(A, length)

 

Δώσε help audiorecorder για να δεις τι κάνει.

 

Έχει μεθόδους και για σύγχρονες και ασύγχρονες λειτουργίες.

 

Δες και εδώ:

 

http://function.name/in/Matlab/audiorecorder

 

Αυτά για την recordblocking.

 

 

 

Στην wavrecord πρέπει να προσέξεις την Fs που χρησιμοποιείς. Ενδέχεται να χρησιμοποιείς κάποιο rate που δεν υποστηρίζει το σύστημά σου.

Δημοσ.

Παιδια για να μην ανοιγω νεο θεμα θελω να ρωτησω το εξης για ηχογραφηση απο μικροφωνο. Πως γινεται το μικροφωνο να ανοιχνευει την ενταση του ηχου και οταν ξεπερασει καποια db να αρχισει να ηχογραφει αυτοματα και οταν πεσει η ενταση κατω απο καποια db να σταματαει την ηχογραφηση. Δεν θελω να μου πειτε σε matlab αλλα σε VB ή C++ με χρηση WinAPI. Το πως γινεται η ηχογραφηση το ξερω αλλα δεν ξερω πως γινεται να ελεγχω την ενταση.

Thanks

Δημοσ.

Παιδια για να μην ανοιγω νεο θεμα θελω να ρωτησω το εξης για ηχογραφηση απο μικροφωνο. Πως γινεται το μικροφωνο να ανοιχνευει την ενταση του ηχου και οταν ξεπερασει καποια db να αρχισει να ηχογραφει αυτοματα και οταν πεσει η ενταση κατω απο καποια db να σταματαει την ηχογραφηση. Δεν θελω να μου πειτε σε matlab αλλα σε VB ή C++ με χρηση WinAPI. Το πως γινεται η ηχογραφηση το ξερω αλλα δεν ξερω πως γινεται να ελεγχω την ενταση.

Thanks

 

 

Δεν χρειάζεται να ελέγχεις την ένταση [sic] (στάθμη είναι ο δόκιμος όρος).

 

 

Χρειάζεται να ελέγχεις πότε θα ξεπεράσει η στάθμη - πλάτος κάποια προκαθορισμένη τιμή.

 

Είναι κάτι trivial και κώδικες παίζουν παντού. Επίσης, εξαρτάται από το εάν μιλάμε για προηχογραφημένο σήμα ή live.

 

Είναι κάπως μεγάλος ο κώδικας... ιδιαίτερα σε C++, όπου θα πρέπει να δοθεί σημασία και στους τύπους δεδομένων που έχεις (floating point arithmetics vs fixed point).

 

Ψάξε στο internet... θα βρεις σίγουρα κώδικα. Δυστυχώς, δεν μπορώ να σε βοηθήσω παραπάνω μιας και η κάθε υλοποίηση κάποιου τέτοιου κώδικα επηρεάζεται από την εκάστοτε εφαρμογή. Αλλά, για να έχεις να υλοποιήσεις ένα τέτοιο υποσύστημα, λογικά, θα έχεις και το θεωρητικό υπόβαθρο.

 

Οπότε, με ένα ψάξιμο στο δίκτυο θα βρεις κάτι για να αρχίσεις.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...