На главную страницу | Новости  |  Ссылки | Контакты

Spyphy Farnsworth
Квантовая реальность. Кибернетика. Искусственный интеллект


Как изменить голос средствами Linux


[22.07.07] Вам никогда не хотелось изменить свой голос?...

У меня такая необходимось вдруг возникла. Ну, представте себе, надо надо позвонить по телефон соседу, и чтобы при этом он тебя НЕ УЗНАЛ. Это ведь здорово! Не так ли? То есть необходимость есть, а значит есть и мотив к поиску решения это задачки.

1. Фильтры-эффекты

play 1.wav echo 1 0.6 150 0.6 -Эхо

play 1.wav vibro 20 0.9 -Вибрато

play 1.wav chorus 0.7 0.7 20 1 5 2 -s -хор

play 1.wav reverse - Воспроизведите задом на перед

play 1.wav band 3000 700 -Полосовой фильтр

play 1.wav band 0 700 -Полосовой фильтр

В общем неплохими эффектами также являются следующие:

echo 1 0.6 100 0.8 300 0.5 500 0.3

Обратите внимание на reverse. Эта функция очень прикольна тем, что в таком зашифрованном виде голосовое сообщение можно передавать даже по телефону(!!!), а на конечном пункце восстанавливать его назад. Конечно, качество сообщения при этом пострадает, но разобрать можно.

---------

= sox =

На самом деле, play - это всего лишь платформо-независимый скрипт, входящий в состав пакета sox.

Должно быть

sox 1.wav -t ossdsp /dev/dsp

sox 1.wav -t raw -r 44100 -sw -c 2 - | esdcat

У меня, правда, всё это не работало, т.к. вознили проблемы - всегда занят /dev/dsp.

Работа с потоками:

sox - 1.wav < 2.wav

sox 1.wav - > 2.wav

Так мы сможем использовать sox как фильтр в програмном канале.

[02:40] У меня получилось осуществить свою мечку! На помощь пришёл сервис ARtS - artsd, вместе с программами artsplay и artscat. Работает в ALSA и OSS.

Внимание, если у вас заработает следующая инстркуция, то это может привести к цепной реакции, когда звук с колонок будет попадать в микрофон, усиливатся и снова идти в динамики... и так до бесконечности. Поэтому осторожно:

rec -v 30 -t raw -c 1 - | artscat

[9:47] Однако такое качество звука некуда не годится - оно слишком нестабильное и прерывистое. Нужно или использовать буфер в несколько секунд, или использовать всё же не программый, а аппаратный миксер.

[10:32] Вот, что надо!!!!

rec -t raw -c 1 -r 88200 - | artscat

Можно попробывать применить полосовой фильтр:

rec -t raw -c 1 -r 88200 - band 3000 7009 | artscat

[23.07.07 22:43] Пока полосовой фильтр - это всё, что я смог найти из эффектов sox, из тех, что работают прямо в потоке. Возможно, что некоторых случаях и его может быть достаточно.

Затем (когда-нибудь) я хочу поэксперементировать с другими звуковыми редакторами (типа wavelab), чтобы узнать, существует ли в природе необходимые эффекты вообще. Если да, то тогда можно будет отказаться от потока, а зделать проще.

Так я придумал, что можно поступить следующим образом. А именно, можно использовать принцип не домашнего телефона, а принцип работы РАЦИИ - приём-вызов. Т.е. я нажимаю на кнопку и говорю в микрофон лишь одну фразу. Затем кнопку отпускаю и данная запись быстренько обрабатывается и посылается по назначению. Само собой разуещееся, что не нужно заставлять ждать при этом собеседника слишком долго!

В качестве просто решения можно написать программку на С++, а, возможно, даже и с помощью скриптов (хотя маловероятно).

В качестве очень простого, но довольно "смешного" эффекта можно использовать следующий:

"speed 2".





galaxy