Аудиоинтерфейс доступа к Node JS

Я хочу отправить аудиосигнал, исходящий из моего аудиоинтерфейса (focusrite saffire), на мой сервер nodejs. Как мне это сделать? Самый простой способ - получить доступ к аудиоинтерфейсу из браузера (html5), например, захватить вывод микрофона с помощью getUserMedia (https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia), но не смог найти способ получить доступ к моему аудиоинтерфейсу через эту библиотеку. В противном случае я планирую создать настольное приложение, но не знаю, есть ли функция / библиотека, позволяющая получить доступ к моему аудиоинтерфейсу, подключенному к USB.

какая у тебя ОС? если в Linux есть несколько инструментов для просмотра и изменения аудиоустройства ввода по умолчанию

Scott Stensland 10.11.2018 00:19

@ScottStensland Спасибо за ответ, ОС будет Linux. Итак, после изменения входного аудиоустройства по умолчанию на мой аудиоинтерфейс в ОС, я мог бы использовать его для входа в getUserMedia в браузере? Если это так, я сообщу, как только получу свой аудиоинтерфейс.

cwo 10.11.2018 23:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
2
376
2

Ответы 2

Вероятно, это не имеет ничего общего с Javascript или MediaDevices API. В Linux при использовании Firefox PulseAudio требуется для взаимодействия с вашим аудиооборудованием. Поскольку ваша звуковая карта является интерфейсом ввода / вывода, вы сможете довольно легко протестировать ее, просто проиграв любой звуковой файл в браузере.

Большая часть Конфигурация PulseAudio может быть достигнута с помощью графического интерфейса pavucontrol. Вы должны проверить вкладку «Конфигурация» и обе вкладки «Устройство ввода» и «Устройство вывода», чтобы убедиться, что ваш Focusrite правильно настроен и используется в качестве ввода / вывода звука.

Как только это будет сделано, вы сможете получить доступ к аудиопотоку, используя следующее (доступно только в «защищенном контексте», то есть localhost или обслуживается через HTTPS, как указано на упомянутой вами странице MDN):

navigator.mediaDevices.getUserMedia({ audio: true })
  .then(function(stream) {
    // do whatever you want with this audio stream
  })

(фрагмент кода взят из Страница MDN о MediaDevices)

Отправка аудио на сервер - это совсем другая история. Вы что-нибудь пробовали? Вам нужна связь с сервером в реальном времени? Если это так, я бы начал с просмотра WebSockets API. Документацию по WebRTC тоже стоит прочитать, но она больше ориентирована на взаимодействие между клиентом.

Как использовать точный идентификатор устройства

Используйте медиаустройство ограничивает для передачи точного идентификатора устройства.

Образец будет

const preferedDeviceName = '<your_device_name>'
const deviceList = await navigator.mediaDevices.enumerateDevices()
const audio = devices.find((device) => device.kind === 'audioinput' && device.label === preferedDeviceName)
const {deviceId} = audio;
navigator.mediaDevices.getUserMedia({audio: { deviceId }}

Как обработать и отправить на бэкэнд

Возможный дубликат это

Все еще не ясно, следуйте это

Другие вопросы по теме