Воспроизведение звука в реальном времени с микрофона. c #

Я хочу создать приложение, которое позволит мне записывать с моего микрофона и воспроизводить запись через другие компьютеры. На данный момент, однако, я просто хотел бы, чтобы он воспроизводился на моем собственном компьютере, чтобы я мог заставить его работать.

Я смотрел на NAudio в течение последних нескольких часов, и мне кажется, что он может помочь мне в достижении этой цели.

Мне просто интересно, был ли у кого-нибудь еще опыт в этом, и возможно ли это вообще?

Спасибо, Стюарт


person stuartmclark    schedule 13.10.2010    source источник
comment
Вам нужен звук в реальном времени или вы просто хотите воспроизвести записанный файл на другом компьютере?   -  person Robert Harvey    schedule 13.10.2010
comment
Я хотел бы воспроизводить аудио в реальном времени. Поэтому, когда я говорю в микрофон, я слышу себя как можно быстрее.   -  person stuartmclark    schedule 13.10.2010


Ответы (4)


Вот пример проекта на codeproject, который делает это:
http://www.codeproject.com/KB/cs/Streaming_wave_audio.aspx
Я не знаю, насколько мала задержка.

В качестве кодека рекомендую Speex (хотя бы для речи). Он бесплатный, с открытым исходным кодом и предлагает низкую задержку и низкую пропускную способность.

person CodesInChaos    schedule 14.10.2010
comment
Это большое спасибо, я просто пытаюсь разделить это приложение на два отдельных приложения, одно для вещания, а другое для прослушивания, но пока мне не повезло. У вас есть идеи, как я могу это сделать. Я создал два приложения, которые, как я полагаю, будут работать, используя этот код, но когда я начинаю записывать / слушать, кажется, что они не видят друг друга и ничего не может пройти. - person stuartmclark; 15.10.2010
comment
Без понятия. Я никогда не разбирался в сетевых вещах. Я использовал только обертку над WaveIn / WaveOut. - person CodesInChaos; 15.10.2010

Bass Audio Library - еще один надежный вариант, на который стоит обратить внимание.

person pattertj    schedule 13.10.2010

Это возможно, но вряд ли вы получите низкую задержку с WaveIn / WaveOut (возможно, лучшие результаты с WASAPI). Для хранения звук записывается с микрофона и выводится на звуковую карту.

person Mark Heath    schedule 14.10.2010
comment
Итак, если я правильно вас понял, я бы записывал и сохранял в файл / буфер и выводил из этого же буфера на динамики? Почти одновременно? Прошу прощения, если это звучит сложнее, чем есть на самом деле. Я полный новичок в разработке аудиопрограмм. - person stuartmclark; 14.10.2010
comment
правильно, буферизируйте записанный звук в памяти, чтобы его можно было как можно скорее вернуть на звуковую карту для воспроизведения. Посмотрите на BufferedWaveProvider (добавлена ​​ссылка выше) - person Mark Heath; 14.10.2010

NAudio отлично подходит в качестве отправной точки для захвата и воспроизведения звука, но, как указал Марк, задержка может быть проблемой.

Если вы сделаете следующий шаг и хотите отправить аудиоданные по сети, вам понадобится кодек для сжатия данных, поскольку PCM или WAV не сжаты, а для голоса вам понадобится лишь небольшая часть полосы пропускания, необходимой для WAV. Поскольку вы работаете с C #, доступен порт Speex для C #, называемый NSpeex, на который, возможно, стоит взглянуть в..

person balistof    schedule 09.11.2010