Re: [CBLX] Cherche enregistreur audio tout simple en ligne de commande

[ Thread Index | Date Index | More lists.tuxfamily.org/carrefourblinux Archives ]


Salut,
j'ai pas mal travaillé avec les micro sous Linux.
Pour avoir la liste des tes périphériques :
arecord -l

Si ton périphérique est configurer par défaut tu peux tester
arecord | aplay

Après j'ai pas mal bossé avec python et le module pyaudio
Je te donnes en pj un ou deux script.
get_info.py n te donnera les info sur la liste de tes périphériques.

En modifiant un peu ce script et avec la doc de pyaudio, tu peux obtenir facilement les taux d'échantillonnage directement accessible au niveau du matériel.

après tu peux enregistrer avec les autres scripts en donnant ton numéro de périphérique choisie.
Dans mes scripts le taux d’échantillonnage est fixé.
16k et 48k

Bon courage mat.
Le 02/12/2015 14:56, Delaunay Christophe a écrit :
Bonjour tous,

J'ai besoin de tester un microphone USB sur une machine linux en vue de développer un soft d'acquisition particulier. Quand on branche ce micro sur une machine windows, il se présente comme un périphérique d'entrée audio on ne peut plus standard.

Mais sous linux, est-ce qu'il y a quelque chose pour, d'une part, vérifier que mon micro est bien reconnu et fonctionne bien, et d'autre part, pour tester le taux d'échantillonnage admissible par ce micro, (44,1 kHz, 48 kHz, ou moins, ou plus)? Au pire aller, Ecasound va probablement me faire ça, d'où mon insistance sur le mot "simple", pour "plus simple que Ecasound".

Bon après-midi. @+ ChD


--
Mathieu Barbe
Research Engineer at CEA-LETI
DRT/LETI/DACLE/ LIALP
Laboratoire Infrastructures et Ateliers pour le Logiciel sur Puces

Commissariat à l’énergie atomique et aux énergies alternatives
MINATEC Campus | 17 rue des Martyrs | 38054 Grenoble Cedex 9
Tel : +33 (0)4 38 78 30 08
mathieu.barbe@xxxxxx

import pyaudio
pa=pyaudio.PyAudio()
api_info= pa.get_default_host_api_info()
print "API Name : %s"%api_info["name"]
print "api index : %s"%api_info["index"]
print "Default output device  : %d"%api_info["defaultOutputDevice"]
print "Default input device  : %d"%api_info["defaultInputDevice"]

device_count=pa.get_device_count()
print "number of device : %d"%device_count


print "Device Name"
for index in range(device_count):
    device_info=pa.get_device_info_by_index(index)
    print "%d : %s"%(index,device_info["name"]) 
    
#    print device_info
# -*- coding:UTF8 -*-
import sys
import pyaudio, wave
RECORD_SECONDS=10
file_name="test_record.wav"
#params audio :
if len(sys.argv) == 2 : 
    DEVICE=int(sys.argv[1])
else :
    DEVICE=None
FORMAT = pyaudio.paInt16
CHANNELS =1
RATE = 16000
CHUNK=128
audio = pyaudio.PyAudio()
raw_input("\npress enter to lunch recording\n")
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK*100, input_device_index=DEVICE)
print("* recording")
data=''
try :
    while True :
        data+= stream.read(CHUNK)
except KeyboardInterrupt:
    print("* done recording")
stream.stop_stream()
stream.close()

#sav wav file

wf = wave.open(file_name, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

audio.terminate()

# -*- coding:UTF8 -*-
import sys
import pyaudio, wave
RECORD_SECONDS=5
file_name="test_record.wav"
#params audio :
if len(sys.argv) == 2 : 
    DEVICE=int(sys.argv[1])
else :
    DEVICE=None
FORMAT = pyaudio.paInt16
CHANNELS = 1
#RATE = 16000
RATE = 48000
RATE2=16000
CHUNK=1024*3 # pour passer de 48kHz à 16kHz



audio = pyaudio.PyAudio()
raw_input("\npress enter to lunch recording\n")
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK, input_device_index=DEVICE)
print("* recording")
frame=[]
#un passage dans le for pour chaque chunk
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): 
    data = stream.read(CHUNK)
    data2=""
    for i in range(CHUNK*2):
        if i%3 == 0:
            data2 += data[i:i+1]
    frame.append(data2)
print("* done recording")
stream.stop_stream()
stream.close()

#sav wav file

wf = wave.open(file_name, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE2)
wf.writeframes(b''.join(frame))
wf.close()

audio.terminate()



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/