Pull to refresh

Comments 10

Такой синтезатор было бы прикольно к игрушке прикрутить, для самостоятельной озвучки разных персонажей. Если звучание к стилю игры подойдёт.
Пока этот не готов, можете для игры взять eSpeak.

У него уже есть ряд вариантов женского и мужского, плюс с эффектами робота и шептания, а главное на куче языков.

Если автор поста с eSpeak не знаком, то возможно тоже имеет смысл на него посмотреть, так как он под open source.
Стоп, стоп, а почему ни слова не сказано про Adobe Audition? А я то думал…

Например, такая последователость:
* Stretch and Pitch – для изменения тональности
* Flanger — для придания голосу «роботостности»
* EQ — для обрезания высоких и низких, чтобы как из «коробки»
В подавляющем большинстве распространённых чипов синтезаторов речи 1970-х синтез представлял собой распаковку упакованной в LPC речи (такое сжатие, на самом деле, недалеко ушло от реального синтеза).
Данные (коэффициенты для LPC) подготавливались из сэмплов при помощи софта типа QBox Pro, а затем проигрывались чипом. Либо слова брались непосредственно из ПЗУ синтезатора (что сути не меняет, там они точно так же сжаты в LPC). Вот, к примеру, я недавно написал интру, можно оценить настоящее звучание чипа TMS5220: https://www.youtube.com/watch?v=JJneJzWwd7U
Другой очень распространённый чип тех времён — SP0256. Суть там та же — LPC.
Кроме LPC звучание определяет способ, которым формируются слова. Либо они хранятся целиком (как слова). Либо хранятся отдельные фонемы (так же сжатые) и из них формируются слова. В последнем случае, естественно, возникает ещё специфика звучания из-за «нестыковок». Эти чипы можно найти в Интернете в виде эмуляторов. Например MAME/MESS содержит вполне качественную и правильную эмуляцию двух вышеупомянутых чипов.
Имеет смысл ещё вот этот блог полистать: http://ploguechipsounds.blogspot.ru/
Некоторые музыканты просто покупают чип и используют его, чтобы получить «то самое звучание». Чипы легко найти на ebay.
Можно поиграться с этим и другими эффектами в онлайн-демо MaryTTS. Нужно выставить эффект «Robot» и не забыть выставить модель (Voice), соответствующую языку.
Спасибо, автор! Отличная книга с матаном! Наши предки уже неплохо умели обрабатывать сигнал с ограниченными вычислительными ресурсами.

Насчет фильтров, однако, наука с тех пор двинулась вперед. Как съевший на фильтрах собаку, позволю себе высказаться.

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

На самом деле в задаче есть два требования: обеспечить возможно более узкую полосу в частотной области и возможно более короткую импульсную характеристику — во временной. Эти два требования взаимно противоречивые. Тому причиной — принцип неопределенности Гейзенберга. Многие слышали об этом принципе из квантовой механики, но на самом деле его причины чисто математические и заключаются в том, что сигнал, компактный во временной области, не может быть одновременно компактным и в частотной области.

Какие же фильтры достигают наилучшего (т.е. наименьшего) произведения дельта-t на дельта-f, т.е. неопределенности по времени на неопределенность по частоте?

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

Если мы определим меру компактности как интеграл от квадрата функции за пределами интервала, в котором она должна быть сосредоточена — то наилучшиее (т.е. наименьшее) значение этого интеграла будет достигаться на функции Гаусса — y=exp(-x^2). Эта функция компактна и во временной области, и в частотной, хотя и не достигает полного нуля ни в одной из них.

Таким образом, если импульсная характеристика фильтра является функцией Гаусса, модулированной комплексной экспонентой — то такой фильтр будет иметь наиболее узкую полосу пропускания среди всех фильтров, имеющих данную длину импульсной характеристики (в смысле интеграла от квадрата «остатков» за пределами полосы пропускания). Как бонус, такой фильтр является одновременно преобразователем Гильберта. Его выходной сигнал будет комплексным, а его модуль — огибающей, очень точно восстанавливающей эволюцию амплитуды во времени. Это делает ненужными выпрямители или иные амплитудные детекторы после фильтра.

Импульсная характеристика в виде функции Гаусса является бесконечной в обе стороны, поэтому она в традиционном смысле является физически нереализуемой. Также она не очень хорошо приближается суммой экспонент — то, из чего состоят импульсные характеристики традиционных БИХ-фильтров. Тем не менее, фильтр с такой импульсной характеристикой можно с высокой степенью точности реализовать, воспользовавшись аппаратом КИХ-фильтров. Нужно просто обрезать функцию Гаусса во временной области с обеих сторон. Тогда она станет конечной во времени, и ее можно будет реализовать как КИХ-фильтр. В частотной области это даст искажения — вместо монотонного затухания до нуля за пределами полосы пропускания, начиная с определенного уровня, образуется «гребенка» из боковых лепестков. Но правильно выбрав длину, за пределами которой обрезается импульсная характеристика, всегда можно добиться заданно (низкого) уровня этих искажений. В своих программах я обычно режу гауссианы на длину, в обе стороны в 4 раза превышающую их параметр «сигма». Это дает уровень боковых лепестков в районе -100дБ.

Вообще в последнее время КИХ-фильтры все чаще вытесняют БИХ. Связано это с тем, что они легче в реализации, имеют меньшие требования к точности вычислений; в то же время они имеют превосходящие характеристики. В частности, гауссовский КИХ имеет линейную фазовую характеристику.

На фильтрах Гаусса построен метод времячастотного анализа под названием «Morlet's wavelets».

Также можно поэкспериментировать с резонансными полосно-пропускающими БИХ-фильтрами второго порядка. Эти фильтры нельзя определить в какой-то определенный класс (типа Бесселя, Баттерворта и т.д.). Вместо этого у них есть один параметр — добротность, который определяет остроту пика в частотной области, т.е. ширину полосы пропускания. Разумеется, чем выше добротность, чем острее пик — тем длиннее импульсная характеристика. Так что нужно немного поэкспериментировать. Так как порядок фильтров низкий — то расходы на их реализацию малы. Можно создать гребенку из большого числа фильтров с частично пересекающимися полосами. Тем самым будет достигнута малая длина импульсной характеристики.

Как-то так. Пишите, если нужна еще информация.
Не знаете — что мешает сделать «изменятель» голоса на чужой, например на женский? Есть всякие MorphVox, но качество у них не очень.
Обработкой голоса вплотную не занимался, поэтому по данному вопросу могу лишь ответить из общих соображений. Подозреваю, что до сих пор не удалось обнаружить и качественно выделить из сигнала все те особенности, которые определяют человека, которому принадлежит голос. Важен ведь не только тембр, а еще и особенности произношения отдельных звуков; темп речи, интонации, лексикон. Думаю, что даже при полной замене голоса на истинно чужой (если другой человек произнесет написанное вами) все равно можно будет вычислить автора — по лексикону, особенностям построения предложений и теме разговора.

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

Также, если где-то и удается выделить из сигнала ключевые особенности, отличающие женщину от мужчины и т.д., то это еще не ознаачет, что такими особенностями легко манипулировать. До сих пор нет идеального решения задачи изменения тембра звука без изменения его скорости. То есть просто повысить или понизить высоту тона с сохранением темпа — уже проблема. Тут сложности исходят из того же принципа неопределенности Гейзенберга: невозможно точно определить мгновенный истинный спектр сигнала. Методы оценки спектра имеют погрешности, связанные с произведением неопределенности по времени и частоте. В последнее время появляются новые интересные методы, напр. см. статью «Sparse time-frequency representations» от Marcello Magnasco — математика и одновременно исследователя мозга в части звукового восприятия.

Возможно также, что спектрограмма (зависимость мгновенного спектра от времени) не является оптимальным представлением голоса, которое выделяет ключевые его особенности. Но это на данный момент почти самое лучшее, что известно. Различных базисов (образно говоря, «углов», с которых можно посмотреть на сигнал) бесконечное множество. Знать бы, какой из них для голоса оптимальный.
Ого, да тут непаханное поле, я смотрю. Спасибо.
Sign up to leave a comment.

Articles