Pull to refresh

Как превратить смартфон в микрофон (идеи и вопросы)

Open source *System Programming *Development for Android *Development of communication systems *Development for Linux *
Всем привет. Я бы хотел поговорить о том как можно превратить смартфон в микрофон для компьютера. У меня есть несколько идей, некоторые из которых я уже пробовал применять.


Зачем это нужно?


Бывает так, что нужно сделать озвучку для какого-то видео, но качественного микрофона под рукой нет. Озвучивать на внутренний микрофон — это значит угробить видео. А вот качество записи на многие современные смартфоны очень даже приличное. Поэтому приходится записывать на смартфон, а затем переносить записи на компьютер.

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

Ниже я перечислю свои идеи, приведу их плюсы и минусы. Хотел бы услышать ваши комментарии о возможности их реализации.

Идея 1. Смартфон в качестве BlueTooth гарнитуры


1. Написать драйвер для Android смартфона, который бы представлял его окружающим устройствам как беспроводная гарнитура (с микрофоном).
2. Написать приложение для Android смартфона, которое будет забирать звук со встроенного микрофона и направлять его этому драйверу.
3. Выполнить поиск bluetooth устройств на компьютере, подключить «беспроводную гарнитуру».
4. Выбрать её на компе в качестве приоритетного микрофона.
5. Profit

Плюсы


Никаких манипуляций на компе. Не требует дополнительного АО для пользователя.

Минусы


Скорее всего нужен будет root на смартфоне

Мои комментарии и вопросы


1. Возможно ли создать такой драйвер? Мне кажется что да. Я видел что-то подобное для подключения DualShock 3 (bluetooth геймпад для PlayStation) к смартфону (Sixaxis Controller).
2. Будет ли задержка при передаче? Уверен, что да.
3. Будет ли передача происходить без потерь? Не знаю.

Идея 2. Аудиовыход смартфона на аудиовход компьютера


1. Создать переходник с TRS на TRRS (CTIA)
2. Создать аттенюатор line to mic (как его делать — обсудим в моём следующем видео)
3. Запустить приложение Mic To Speaker, выводящее звук со встроенного микрофона смартфона на динамик/аудиовыход смартфона.
4. Подключить смартфон к компьютеру через переходник с аттенюатором.
5. Выбрать на компе внешний микрофон как приоритетный.
5. Profit

Плюсы


Никаких манипуляций на компе.

Минусы


Требует дополнительное аппаратное обеспечение

Мои комментарии и вопросы


1. Возможно ли выводить определённые звуки (уведомления) на встроенный динамик, если вставлен штекер в аудио разъём?

2. Возможно ли записывать звук именно со внутреннего микрофона, если вдруг смартфон определит, что доступен внешний микрофон? Я думаю, что приложение само может выбрать с какого устройства брать звук (со встроенного либо со внешнего микрофона). Но чтобы не было лишних проблем, в смартфон лучше вставлять TRS штекер, а не TRRS.

Идея 3. Смартфон в качестве аудиокарты


1. Сделать программу (или что?), чтобы смартфон мог идентифицироваться USB хосту как аудиокарта (т. е. сообщить компу Pid:Vid, соответствующий какой-либо аудиокарте).
2. Написать приложение на Android, которое будет слать звук со встроенного микрофона на «аудиокарту».
3. Активировать подмену vid:pid и запустить приложение
4. Подключить смартфон к компу по usb
5. Выбрать на компе микрофон со внешней аудиокарты как приоритетный
6. Profit

Примечание: описанное не имеет отношения к USB Audio для android. Usb аудио позволяет подключать внешнюю звуковуху к смартфону. То есть звук со смартфона можно выводить на неё и вводить с неё на смартфон. Но нам нужно, чтобы сам смартфон выступал аудиокартой.

Плюсы


Никаких манипуляций на компе.

Минусы


Скорее всего нужен будет root на смартфоне
Дополнительные задержки на usb контроллерах

Мои комментарии и вопросы


1. Возможна ли подмена Vid:Pid или это можно сделать только аппаратно?
2. Возможно ли использовать usb_ModeSwitch для управления такой подменой с компа или же такие манипуляции можно делать только на смартфоне?
3. Хватит ли пропускной способности usb 2.0, чтобы нормально передавать звук? Здесь сказано, что максимальный теоретический рейт для high-speed usb — это 1,023,000 байт/сек.

Идея 4. Передавать аудиопоток по сети


1. Установить приложение, которое отправляет аудио поток со внутреннего микрофона по сети (я использовал Ip Webcam, но это несвободное по).
2. Пробросить сеть смартфона на комп через adb по usb (чтобы исключить wifi). Ip Webcam-gst может сделать это автоматически.
3. Получить доступ с компа к этому потоку.
4. Зарегистрировать в системе виртуальный микрофон. Завернуть в него получаемый http поток в качестве источника. [Нужно для универсальности. Хотя можно использовать записывалку, которая умеет сразу ловить такие потоки, например vlc или open broadcaster].
5. Выбрать на компе этот виртуальный микрофон как приоритетный
6. Profit

Плюсы


Не нужен root на смартфоне

Минусы


Требуется клиентское ПО для компьютера

Мои комментарии и вопросы


1. VLC имеет встроенную возможность захвата http потока, но имеет серьёзные неудобства при записи (по крайней мере в Gui). Как vlc может захватывать поток с помощью командной строки не разобрался. Может кто подскажет?

2. Ip Webcam-gst умеет регистрировать виртуальный микрофон, но не умеет использовать кодек, отличный от Wav. Кто разбирается в gstreamer конвейерах? Нужно собрать конвейер, который бы поддерживал бы Opus и aac.

3. Я видел приложение WoMic, которое реализует такой функционал. Оно требует Win или Mac. А на Linux я применял ipwebcam. Это несвободная программа. Я думаю, что лучше бы функционал ipwebcam (по аудио части) включить в KDE Connect. Я был бы рад, если кто-то мне с этим помог.

Идея 5. Компьютер как bluetooth наушники для смартфона


1. Написать драйвер (?) для компьютера, который бы представлял его окружающим устройствам как bluetooth аудио колонки.
2. Написать программу для компьютера, которая будет регистрировать виртуальный микрофон и направлять в него приходящий на «колонки» звук.
3. Запустить программу на компьютере и оставаться видимым bluetooth устройством.
4. Запустить приложение Mic To Speaker на смартфоне и подключить его к «беспроводным наушникам». (Я не проверял, можно ли изменять слив при работе этого приложения, но думаю что проблем быть не должно. Если будут проблемы, значит надо написать программу для android, которая будет направлять звук со встроенного микрофона на «bluetooth колонки»).
5. Выбрать на компьютере виртуальный микрофон как приоритетный.
6. Profit

Плюсы


Не нужен root на смартфоне

Минусы


Для одновременного нормального функционирования блютуса компа (например, для bluetooth клавиатуры) скорее всего понадобится дополнительный bt донгл. Я видел подобную ситуацию с dualshock драйвером для компа.

Мои комментарии и вопросы


Какой из всех предложенных вариантов обеспечит наименьшие задержки при передаче?
Only registered users can participate in poll. Log in, please.
Какой вариант вам больше понравился?
21.54% Идея 1. Смартфон в качестве BlueTooth гарнитуры 14
29.23% Идея 2. Аудиовыход смартфона на аудиовход компьютера 19
26.15% Идея 3. Смартфон в качестве аудиокарты 17
32.31% Идея 4. Передавать аудиопоток по сети 21
18.46% Идея 5. Компьютер как bluetooth наушники для смартфона 12
65 users voted. 51 users abstained.
Tags:
Hubs:
Total votes 19: ↑12 and ↓7 +5
Views 50K
Comments Comments 39