Задача: т.к. в моем ноутбуке Lenovo E555 присутствует микрофон – нужно организовать возможность активации его и прослушивания с функцией записи происходящего в радиусе действия.
На ноутбуке нажимаю клавишу F4 – чтобы включить микрофон, затем открываю настройки звука:
или же програмно нажимаю через консоль командной строки:
ekzorchik@navy:~$ sudo showkey --scancodes
[sudo] password for ekzorchik:
режим kb был RAW
[ если вы пытаетесь проделать это под X-ами, то, возможно,
это не сработает, так как X-сервер тоже читает /dev/console ]
нажмите любую клавишу (программа завершается через 10 секунд после последнего нажатия на клавиатуре)…
0x5a 0xda – вот мой код при нажатии клавиши на клавиатуре F4
^Cпойман сигнал 2, очистка…
Решение данной задачи будет освящено в одной из следующих заметок.
Ubuntu 12.04.5 Desktop amd64 (рабочее окружение: Gnome Classic)
Приложения – Системные утилиты – Параметры системы – Звук (Оборудование) – вкладка “Вход” в момент когда начинаю говорить/шуршать шкала “Уровень записи” начинает изменять свое значение.
Информация по аудиосистеме:
ekzorchik@navy:~$ cat /proc/asound/cards
0 [Generic ]: HDA-Intel – HD-Audio Generic
HD-Audio Generic at 0xf0c40000 irq 45
1 [Generic_1 ]: HDA-Intel – HD-Audio Generic
HD-Audio Generic at 0xf0c44000 irq 16
29 [ThinkPadEC ]: ThinkPad EC – ThinkPad Console Audio Control
ThinkPad Console Audio Control at EC reg 0x30, fw unknown
ekzorchik@navy:~$ apt-cache search arecord
alsa-utils – Utilities for configuring and using ALSA
arecord, aplay – command-line sound recorder and player for ALSA sound‐
card driver
ekzorchik@navy:~$ arecord -l
**** Список CAPTURE устройств ****
карта 1: Generic_1 [HD-Audio Generic], устройство 0: CX20751/2 Analog [CX20751/2 Analog]
Подустройства: 0/1
Подустройство №0: subdevice #0
или же:
Ctrl + Alt + T → alsamixer, потом клавиша F2 и опускаемся до строки /proc/asound/pcm и нажимаем клавишу Enter
Настраиваем чуствительно микрофона:
Ctrl + Alt + T → alsamixer – нажимаем клавишу F6, выбираю устройство (в моем случае оно под пунктом 1), дальше столбец с подписью PCM
Помимо клавиш “вверх” и “вниз” – можно каждое значение изменять посредством клавиш “q” и “w”.
Чувствительность измеряется в дБ: → напряжение на выходе микрофона к звуковому давлению при заданной частоте (обычно 1000 Гц), выраженное в милливольтах на паскаль (мВ/Па). Чем больше данное значение, тем чувствительнее микрофон. Формула: дБ = 10*2*lg(V1/V0), где V0=1В/Па
. Пример: 7мВ = 10*2*(lg7/1000) = -43дБ
ekzorchik@navy:~$ sudo apt-get install apcalc -y
расчет с помощью утилиты calc, или
Приложения – Стандартные – Калькулятор – Режим – Расширенный, формула выглядит следующим образом: 10×2×log (7÷1000) = -43дБ
Чем ближе значение к 0 (нулю; значение минус обычно не принимается в расчет и его опускают), тем выше чувствительность микрофона.
Записать звук (проговариваю все что угодно) подаваемый в микрофон продолжительность 15 секунд:
ekzorchik@navy:~/Documents$ arecord -d 15 test-mic.wav
Запись WAVE ‘test-mic.wav’ : Unsigned 8 bit, Частота 8000 Гц, Моно
ekzorchik@navy:~/Documents$ soxi test-mic.wav
Input File : ‘test-mic.wav’
Channels : 1
Sample Rate : 8000
Precision : 8-bit
Duration : 00:00:15.00 = 120000 samples ~ 1125 CDDA sectors
File Size : 120k
Bit Rate : 64.0k
Sample Encoding: 8-bit Unsigned Integer PCM
ekzorchik@navy:~/Documents$ file test-mic.wav
test-mic.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 8 bit, mono 8000 Hz
ekzorchik@navy:~/Documents$ dir -sh test-mic.wav
120K test-mic.wav – через утилиту soxi данный размер также выводится.
Открываю приложения для воспроизведения аудио и данный аудиофрагмент:
ekzorchik@navy:~/Documents$ mplayer test-mic.wav
или же так:
ekzorchik@navy:~/Documents$ aplay test-mic.wav
Воспроизведение WAVE ‘test-mic.wav’ : Unsigned 8 bit, Частота 8000 Гц, Моно
^CПрервано сигналом Прерывание…
Получаю, что произносимое аудио довольно таки неплохого качества на мой взгляд.
А если бы у меня в системе было бы несколько карт аудио то можно было ее задействовать при формировании аудио фрагмента:
ekzorchik@navy:~/Documents$ arecord hw=1,0 -d 15 test-audio.wav
ну как-то так, проверить к сожалению не могу. (под рукой нет второй карты, но как будет то обязательно рассмотрю и этот вариант).
Проверяю уже по другому, установив в системе пакет Audacity
ekzorchik@navy:~$ sudo apt-get install audacity -y
Запускаю его:
Приложения – Аудио и Видео – Audacity, затем в запущенной программе нажимаю на кружочек (красный) во всплывающем сообщении запись Record и начинаю произность, т.е. генерирую из себя голос и любые другие звуки. В этом момент в основном экране программы начинает генерировать изображения амплитуды, по прошествии некоторого времени дабы не закромождать рабочую область нажимаю Stop, а затем Play с целью воспроизвести:
Отлично запись воспроизводится. Сохраняю данный трек выше: File – Save Project As – если нужно в дальнейшем его использовать то сохранив в формате *.aup
(ekzorchik@navy:~/Documents$ file test.aup
test.aup: XML document text) смогу к нему вернуться когда он мне понадобиться.
а если же нужно получить законченный аудиофрагмент, то File – Export
имя: test
Формат: WAV (Microsoft) signed 16 bit PCM
Нажимаю Save, затем поля тегов не заполняю, а просто нажимаю Ok, полученный файл представляет из себя: (это пока несколько способов которые я знаю чтобы получить информацию по аудио файлу)
ekzorchik@navy:~/Documents$ file test.wav
test.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
Через программу mplayer – в консоль будет выводиться информация по работе воспроизведения аудио файла:
ekzorchik@navy:~/Documents$ mplayer -identify test.wav
Creating config file: /home/ekzorchik/.mplayer/config
MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing test.wav.
libavformat version 53.21.1 (external)
Mismatching header version 53.19.0
ID_AUDIO_ID=0
Audio only file format detected.
Load subtitles in ./
ID_FILENAME=test.wav
ID_DEMUXER=audio
ID_AUDIO_FORMAT=1
ID_AUDIO_BITRATE=1411200
ID_AUDIO_RATE=0
ID_AUDIO_NCH=2
ID_START_TIME=0.00
ID_LENGTH=6.00
ID_SEEKABLE=1
ID_CHAPTERS=0
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 44100 Hz, 2 ch, s16le, 1411.2 kbit/100.00% (ratio: 176400->176400)
ID_AUDIO_BITRATE=1411200 (Битрейк)
ID_AUDIO_RATE=44100 (Частота дискритизации)
ID_AUDIO_NCH=2 (Количество каналов)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=pcm
Video: no video
Starting playback…
A: 3.7 (03.7) of 6.0 (06.0) 0.0%
MPlayer interrupted by signal 2 in module: play_audio
ID_SIGNAL=2
A: 3.9 (03.9) of 6.0 (06.0) 0.0%
Exiting… (Quit)
ID_EXIT=QUIT
ekzorchik@navy:~$ sudo apt-get install sox -y
ekzorchik@navy:~/Documents$ soxi test.wav
Input File : ‘test.wav’
Channels : 2
Sample Rate : 44100
Precision : 16-bit
Duration : 00:00:06.35 = 280042 samples = 476.262 CDDA sectors
File Size : 1.12M
Bit Rate : 1.41M
Sample Encoding: 16-bit Signed Integer PCM
Подведя черту под рассмотренным выше я открыл для себя много нового. Пока следует завершить данную заметку. С уважением автор блога – ekzorchik.