Как слушать микрофон в MATLAB?

Интересно, есть ли способ захватить звук с микрофона с помощью MATLAB, просто обработать его (мне просто нужно несколько стандартных звуковых функций, я могу сделать это сам) и принять решение на основе этих функций. Наверное, единственной моей характеристикой будет амплитуда звука, и я хочу принять решение, исходя из этого. Все, что мне нужно, это способ записи живого звука, а все остальное я могу сделать сам.

Как можно записать звук в реальном времени (на лету или путем сохранения в виде небольших блоков и обработки с небольшой задержкой) с помощью MATLAB?

Я нашел этот code, но я получаю сообщение об ошибке:

Error using analoginput (line 46)
The DAQ Legacy Interface is not supported on this platform..

Любое решение, которое работает под 64-битной Windows 8?

Примечание

Я задал вопрос для MATLAB, но на данный момент я согласен с любым решением :) В качестве псевдокода я хочу следующее:

float threshold;
float max_duration;
while (!interrupted) && (timer() < max_duration)
    a = record_audio() // or record_audio(5s)
    b = analyze_audio(a)
    if b.mean_amplitude > threshold
        do(something);
    end
end

Я не уверен в процессе записи (он параллельный или нет), но это не имеет значения. Некоторые живые данные могли быть упущены при анализе, для меня это приемлемо.

Редактировать

Спасибо за помощь. Как следует из документации, я запустил daq.getVendors() и получил следующий результат:

ans = 
Data acquisition vendor 'National Instruments':
      ID: 'ni'
      FullName: 'National Instruments'
      % ..

Итак, я попробовал s = daq.createSession('ni') и получил эту ошибку:

The vendor 'ni' is not known. Use 'daq.getVendors()' for a list of vendors.

Любые рекомендации по языку программирования или внешнему программному обеспечению для этого приветствуются и приемлемы :)

Спасибо,


person jeff    schedule 03.10.2016    source источник


Ответы (1)


Прежде всего, обязательно зайдите в настройки микрофона (настройки ввода) и установите флажок «слушать этот микрофон». Вы должны слышать вход микрофона из динамиков, потому что следующий код будет записывать звук, выводимый компьютером. Так как мы выводим ваш микрофон, вы будете записывать микрофон.

Затем вы можете записать вывод звука как:

ai=analoginput('winsound');
addchannel(ai,1);
start(ai);
data=getdata(ai);

вы можете послушать его по

sound(data)
person Serdar Oztetik    schedule 03.10.2016
comment
Спасибо, но я все еще получаю ту же ошибку при использовании analoginput(). Также я не понимаю, как периодически (онлайн) обрабатывать данные. Это похоже на автономный режим, т. е. некоторое время записывает звук, а затем останавливается. Я хочу записывать звук и анализировать его каждые N (~ 5) секунд. Является ли это возможным? - person jeff; 03.10.2016