Echantillonage à 8 kHz

Bonjour,

J'ai un projet à réaliser, il s'agit de à partir d'un micro d'avoir un effet d 'écho quand l'on parle.
Je dois donc récupérer avec un échantillonnage à 8 kHz le son puis appliqué un algorithme pour l'effet "écho" sur les échantillons et le ressortir.
Malheureusement je ne vois pas comment réaliser l'echantillonage à 8 kHz.
Pourriez vous m'indiquer comment le réaliser ?

Merci d'avance

Bonjour,

Pour l'échantillonnage à 8KHz i faut utiliser un timer.
Comme c'est quelque chose d'assez compliquer à utiliser il existe un librairie pour cela :wink:
http://playground.arduino.cc/Main/FlexiTimer2

Avec comme configuration :

FlexiTimer2::set(1, 1.0/8000, maFonction);

PS: pour l'effet d'echo je ne sait pas comment tu comptes l'implémenter mais avec le peu de RAM que possède l'arduino tu ne pourras pas faire grand chose.
Les cartes arduino ne sont pas fait pour traiter des signaux analogiques en temps réel.

C'est un projet chouette mais qui comporte quelque difficulté.
Lorsque tu échantillonnes, ta frequence d'échantillonnage doit être au minimum le double de la frequence la plus élevé que tu va échantillonner. Ici tu échantillonne des fréquences audibles, de 20Hz à 20KHz, donc ta F d’échantillonnage doit au minimum être de 40Khz. Sinon tu vas te retrouver avec quelque chose de TRÈS bizarre!

Bon tu veux travailler a 8KHz, je te propose de filtrer ton signal audio à 4KHz avec un bon filtre. Sachant que les fondamental de la voix sont vers 1-2KHz environ, ça passe. Mais je ne sais pas si ça règle réellement le problème... A voir.
Tu dois aussi savoir que la résolution du convertisseur de l'arduino est de 10bit, tu vas te retrouver avec une qualité de son pas très bonne, mais ça dois passer.
Tu dois aussi, en premier lieu, amplifier le signal de ton micro. En sortie tu vas récupérer une signal au alentour du mV, voir du uV. Donc construction d'un étage de préamplification, pour élever ton signal au max à 5V. Cette étage vas dépendre aussi du type de micro que tu utilises, électret, dynamique, électrostatique...

C'est vrai que pour la RAM ça risque d’être limite.

Tien nous au courant, c'est un sujet qui m’intéresse! :slight_smile:

Lorsque tu échantillonnes, ta frequence d'échantillonnage doit être au minimum le double de la frequence la plus élevé

+1

je te propose de filtrer ton signal audio à 4KHz

+1
A condition que tu élimines les fréquences supérieures à 4kHz, une fréquence d'échantillonage de 8kHz donnera la qualité d'une communication téléphonique (bande 300Hz-3400 Hz), c'est à dire pas terrible..
Le maximum de puissance de la voix humaine est centrée sur 800 Hz (voir les filtres psophométriques utilisés dans les télécom).

Sinon tu vas te retrouver avec quelque chose de TRÈS bizarre!

+1

Avant d'aller plus loin lis donc ceci :

Avec un atMega328 (le processeur de l'arduino UNO par exemple) en admettant que tu arrives à récupérer les 3/4 de la RAM disponible (ce qui fait 1,5k octets) et à condition de ne coder tes échantillons que sur 8 bits au lieu des 10 que délivre l'ADC du processeur tu n'auras tout au plus que 180ms de retard. C'est relativement peu pour faire un bon effet d'écho.

Pour avoir quelque chose de sérieux il faudrait passer à l'arduino Mega là avec 8K de RAM tu peux commencer à faire quelque chose de sérieux.

Même avec 7.5K (disons 500 octets pour le système) de RAM, à 8KHz et avec une précision de 8 bits ça va faire crade ...

Pour le coup une carte arduino Due serait la plus adapté (convertisseur analogique -> numérique + numérique -> analogique 12 bits et 96Ko de RAM)

Sinon utiliser une ligne à retard à ressorts (analogique)
http://www.sonelec-musique.com/electronique_theorie_reverb_ressort.html
et l'Arduino se charge seulement des réglages, pas du retard de propagation.