Третьего дня появилась у меня одна необычная задача – изменить голос при телефонном разговоре до неузнаваемости. Казалось бы – что тут необычного? Еще лет 15 назад, во времена бурной молодости я добывал А-грейд сеты в Lineage с помощью MorphVOX, представляясь горячей цыпой. Явно должны быть под Android приложения для изменения голоса, но на удивление – нет. Оказывается, изменение голоса противоречит политике Google – мало того, что в Play Market нет ничего, что может менять голос «на лету» при звонке, поиски на 4PDA и XDA Developers также ничем не увенчались.
Использование ПК в данном случае свело бы задачу буквально к паре кликов, но мне в этой истории важна портативность – я должен иметь возможность ответить на звонок вне зависимости от того есть ли рядом комп или нет.
Ключевое слово – «комп». Кто сказал, что компьютер – это обязательно большая бандура? В ход пошла давно пылившаяся на полке «малина». Как оказалось, собрать свой собственный войс морфер без труда может собрать даже школьник.
Нам понадобится:
- Портативный компьютер Raspberry Pi ($10)
- Переходник USB-C -> mini-jack ($2)
- Разветвитель mini-jack -> phones + mic ($1)
- Внешняя аудио-карта USB ($2)
- Наушники
- Микрофон
- Power bank
Собираем всё воедино и настраиваем «малину»:
1. Устанавливаем аудиоредактор «sox»
sudo apt install sox
2. У «малины» нет родного входа для микрофона, поэтому далее нам нужно выбрать, чтобы по умолчанию вход и выход аудио работали с внешней звуковой карты. Для этого сначала проверим определилась ли наша звуковая карта и узнаем её id.
aplay -l
3. Смотрим, где есть надпись «USB» и запоминаем id устройства, после чего открываем файл с конфигами ALSA
sudo nano ~/.asoundrc
4. Удаляем всё, что там написано и вставляем следующее:
pcm.!default { type hw card 1 } ctl.!default { type hw card 1 }
При этом в «card 1» необходимо заменить id устройства на то, которое мы определили на втором шаге.
5. Создадим скрипт, который будет при старте системы слушать микрофон, менять тональность и сразу выводить обработанный звук
cd ~ mkdir voice_pitcher sudo nano sound.sh
6. В созданном файле добавляем команду
play "|rec -d pitch -300 band 1.2k 1.5k"
где «-300» необходимо заменить на желаемую тональность
7. Добавляем в автозагрузку
chmod +x sound.sh crontab -e @reboot /home/pi/voice_pitcher/sound.sh > /home/pi/voice_pitcher/sound.log 2>&1
Собственно всё. Включаем питание на power bank, подключаем к телефону, ждем 10 секунд и делаем так, чтобы шалость удалась