API, чтобы разбить голос на фонемы / синтезировать новую речь, учитывая образцы речи?
Вы знаете те фильмы, где технические гики записывают чей-то голос, а их программное обеспечение разбивает его на фонемы? Что они могут затем использовать, чтобы напечатать любую фразу и создать впечатление, будто цель говорит это?
Существует ли это программное обеспечение в версии API? Я даже не знаю, что с Google.
7 ответов
Там нет такого программного обеспечения. Разбиение произвольной речи на составляющие ее фонемы является лишь частично решенной проблемой: программное обеспечение преобразования речи в текст по-прежнему несовершенно, как и преобразование текста в речь.
Идея состоит в том, чтобы воспроизвести тембр голоса цели. Даже если бы вы смогли идеально сегментировать звук, переупорядочивание фонем произвело бы звук с неестественной частотой и интонацией, не говоря уже о артефактах сплайсинга. В этот момент вы переходите к сглаживанию, масштабированию по времени и коррекции высоты тона, которые все возможны и понятны в теории, но плохо работают с данными реального мира, особенно когда рассматриваемый аудиосэмпл такой короткий, как одна фонема, и далее, когда тембр должен быть сохранен.
Эти проблемы усугубляются с фонетической стороны аллофоническими вариациями звуков, основанными на акценте и окружающих фонемах; чтобы достоверно воспроизводить даже низкое качество звука, вам необходимо детальное понимание языка, акцента и речевых шаблонов цели.
Кроме того, ваша главная проблема - это социальная инженерия, и людей нелегко обмануть, когда речь заходит о голосах людей, которых они знают. Даже при большом объеме входных данных в лучшем случае вы можете получить короткий некачественный образец, которого вряд ли хватит для разговора.
Так что, хотя это, безусловно, возможно, это сложно; даже если бы он существовал, он не всегда был бы достаточно хорош.
SRI International (компания, которая создала Siri для iOS) имеет SDK под названием EduSpeak, который принимает аудиовход и разбивает его на отдельные фонемы. Я знаю это, потому что я просмотрел демо продукта около недели назад. Во время демонстрации докладчик показал нам приложение, созданное с использованием SDK. Приложение дало несколько строк текста для чтения докладчиком. После прочтения текста приложение отображает гистограмму, где каждая гистограмма представляет фонему из его речи. Высота каждой полосы представляла собой оценку того, насколько хорошо произносится каждая фонема (докладчик не был носителем английского языка, поэтому он получал более низкие оценки по некоторым фонемам по сравнению с другими). Докладчик также может нажимать на каждую отдельную панель, чтобы воспроизводить только эту отдельную фонему с использованием оригинального звука.
Так что да, существует программное обеспечение, которое разделяет звук по фонемам, и оно делает это очень хорошо. Теперь вопрос о том, могут ли эти фонемы быть повторно собраны в речь, остается открытым вопросом. Если мы получим пробную версию SDK, я опробую ее и дам вам знать.
Если ваша цель состоит в том, чтобы имитировать чей-то голос, то другой подход - преобразовать свой собственный голос (вместо того, чтобы собирать фонемы). Это (удивительно) называется преобразованием голоса, например, http://www.busim.ee.boun.edu.tr/~speech/projects/Voice_Conversion.htm
Технология называется "синтез голоса" и "распознавание голоса".
Java API для этого можно найти здесь Java Voice JSAPI
У Apple есть API для этой речи Apple
У Microsoft есть несколько... один обсуждается здесь Vista речь
Lyrebird - это стартап, который работает над этой самой проблемой. Учитывая образцы голоса человека и некоторый письменный текст, он может синтезировать устную версию этого письменного текста в голосе человека в образцах.
Я не знаю о коммерчески доступном решении, но концепция не совсем вне диапазона возможностей. Например, Университет штата Делавэр имеет достаточно приличное программное обеспечение для этого.
Вы можете получить интересные эффекты искажения голоса с помощью изменения высоты тона. Adobe Audition имеет довольно хорошую реализацию. Antares выпускает несколько интересных вокальных эффектов VST плагинов.
Эти методы используют некоторую форму кодирования с линейным предсказанием (LPC) для обработки голоса как модели фильтра источника. LPC работает с речевыми сигналами, оценивая резонанс речевого тракта (формант), обращая его эффект обратным фильтром, а затем кодируя результирующий остаточный сигнал. Остаточный сигнал в идеале представляет собой последовательность импульсов, которая представляет глоттальный импульс. Это позволяет независимо масштабировать высоту тона и формант, что приводит к гораздо лучшему результату преобразования пола, чем простое смещение высоты.