Как реализовать систему смены голоса?

Я хочу написать приложение, которое изменяет входной голос микрофона и делает его похожим на робота или смешного человека. Он должен поддерживать передачу измененного голоса во все приложения, такие как IM Software или Game Client. Какую технологию я должен подобрать? Windows WaveForm Api? DirectX? аудио драйвер?

Большое спасибо!

Ответ 1

Там есть MSDN статья Coding4Fun, в которой объясняется, как создать систему смены голоса, которая работает через Skype, на С# (.NET). Полный исходный код также размещен в качестве проекта CodePlex. Кроме того, должно быть довольно легко сделать что-то еще с аудио (в отличие от потоковой передачи через Skype), поскольку проект основан на NAudio, который содержит хороший уровень абстракции. Во всяком случае, это достаточно полный (и стабильный) пример - определенно стоит проверить на мой взгляд.

Если вам нужно/нужно использовать С++ или какой-либо другой язык для разработки, тогда этот проект должен по крайней мере дать вам некоторые идеи о том, как это сделать. Тем не менее, если вы можете использовать .NET, то вам повезло, я думаю.

Ответ 2

Голос робота часто выполняется с помощью эффект кольцевого модулятора, смешивая голос с синусоидальной волной - это Полегче. Или используйте vocoder эффект, модулирующий голос на какой-либо другой сигнал, например прямоугольник - может быть немного сложнее, Пойдите, прочитайте, как работают эффекты, получите программу, с помощью которой вы можете проверить, как они звучат (Audacity работает для кольцевого модулятора, поиск и использование вокодера может быть немного сложнее). Затем прочитайте, как это делается, или получите библиотеку, которая будет обрабатывать вас.

Ответ 3

Вы ищете поддержку плагинов VSTi или DXi.
Есть тонны, которые также действуют как вокодеры, даже бесплатно.
Вам просто нужно написать приложение-хост. Посмотрите здесь:)

Ответ 4

Теперь, когда аккуратная идея, особенно для мобильного приложения.

Я бы, наверное, начал офф-лайн, используя WAV файл в качестве входных данных, чтобы заставить эффекты работать так, как я хотел. Вы можете использовать любой язык высокого уровня для этого, но вы, вероятно, хотите что-то, что будет хорошо отображаться в C/С++.

Что касается производственной версии, я бы стал родной и делал это на C или С++. Вы хотите что-то быстро для обработки звука в реальном времени, и мне нравится избегать зависимостей от таких вещей, как .net для распространения. (Не то, чтобы у меня было что-то против .net, это отлично подходит для серверов и дистрибуции внутри компании, но я не очень заинтересован в том, чтобы использовать его как зависимость от программного обеспечения для сжатия.)

Windows DirectShow был бы заманчивым вариантом - вы могли бы сделать некоторые интересные эффекты с мультимедиа, если бы у вас был голос morpher, реализованный как фильтр прямого шоу.

Ответ 5

Что вы ищете, это vocoder. Я не знаю, имеет ли какой-либо из технологий, перечисленных выше, эффект вокодера, но лучший шанс будет с DirectX.

Ответ 6

Попробуйте это примерное приложение. Я считаю его полезным для вас. Ссылка