Перша примітка: Більшість сучасних систем мовленнєвого мовлення, як і система AT&T, з якою ви пов'язали, використовують конкатенативний синтез мови . Ця методика використовує велику базу даних записів голосу однієї людини, яка вимовляє довгу колекцію речень - вибраних таким чином, щоб було присутнім найбільшу кількість поєднань фонеми. Синтезувати речення можна, лише з'єднавши відрізки цього корпусу - складний біт робить струнну спільність безшовною і виразною.
Є дві великі перешкоди, якщо ви хочете використовувати цю техніку, щоб змусити президента Обаму сказати бентежні слова:
- Потрібно мати доступ до великої колекції речень цільового голосу, бажано записаних при однакових умовах запису та хорошої якості. AT&T має бюджет для запису десятків годин одного і того ж динаміка в одній студії, але якщо ви хочете підробити чийсь голос лише за 5 хвилин запису, це буде важко.
- Існує значна кількість ручного вирівнювання та попередньої обробки, перш ніж записана сировина буде у правильному "форматі", який повинен використовуватись конкатенативною системою синтезу мовлення.
Ваша інтуїція, що це можливе рішення, справедлива - за умови, що у вас є бюджет на вирішення цих двох проблем.
На щастя, є й інші методи, які можуть працювати з меншим наглядом та меншою кількістю даних. Поле синтезу мови, зацікавлене в "підробці" або "імітації" одного голосу із запису, відоме як перетворення голосу . У вас є запис A1 цільового динаміка, що говорить речення 1, і запис В2 динаміка джерела B, що говорить речення 2, ви маєте на меті створити запис A2 динаміка Висловлювальне речення 2, можливо, з доступом до запису B1 динаміка B, який відтворюється з його / її голосом таке ж висловлювання, як і цільовий оратор.
Структура системи перетворення голосу така:
- Аудіофункції витягуються із запису A1, і вони кластеризовані в акустичні класи. На цьому етапі трохи схоже на те, що сумки будуть усі "a" динаміка A, всі "o" оратора A тощо. Зауважте, що це набагато простіша і груба операція, ніж справжнє розпізнавання мовлення - нас не цікавить розпізнаючи правильно сформовані слова - і ми навіть не знаємо, який мішок містить "о", а який мішок містить "а" - ми просто знаємо, що в кожному мішку є кілька примірників одного і того ж звуку.
- Цей же процес застосовується і для B2.
- Класи акустики від A1 і B2 вирівняні. Щоб продовжити аналогію з мішками, це еквівалентно спарюванню мішків із кроків 1 та 2, так що всі звуки, які ми маємо в цій сумці від динаміка A, повинні відповідати звукам, які ми маємо в цій сумці від динаміка B. Це співставлення є набагато простіше це зробити, якщо B1 використовується на кроці 2.
- Функція відображення оцінюється для кожної пари мішків. Оскільки ми знаємо, що цей мішок містить звуки від динаміка A, а цей мішок - ті самі звуки, але сказаний диктором B - ми можемо знайти операцію (наприклад, множення матриць на функціональних векторах), яка змушує їх відповідати. Іншими словами, тепер ми знаємо, як зробити так, щоб оратор 2 "о" звучав як "о" динаміка 1.
- На цьому етапі у нас є всі картки для здійснення перетворення голосу. З кожного фрагмента запису B2 ми використовуємо результат кроку 2. щоб з'ясувати, якому акустичному класу він відповідає. Потім ми використовуємо функцію відображення, оцінену на кроці 4, для перетворення зрізу.
Я наполягаю на тому, що це працює на набагато нижчому рівні, ніж виконання розпізнавання мовлення на B2, а потім виконання TTS, використовуючи голос А1 як корпус.
Для етапів 1 і 2 використовуються різні статистичні методи - найбільш поширеними є GMM або VQ. Для другої частини використовуються різні алгоритми вирівнювання - це найскладніша частина, і, очевидно, простіше вирівняти A1 проти B1, ніж A1 проти B2. У більш простому випадку для вирівнювання можуть використовуватися такі методи, як динамічний викривлення часу. Що стосується кроку 4, то найчастішим перетворенням є лінійні перетворення (множення матриці) на функціональних векторах. Більш складні перетворення створюють більш реалістичні імітації, але проблема регресії для пошуку оптимального відображення є складнішою для вирішення. Нарешті, що стосується етапу 5, якість ресинтезу обмежена використовуваними ознаками. Звичайно, LPC легше розібратися з простим методом перетворення (прийняти кадр сигналу -> оцінити залишковий спектр і спектр LPC -> при необхідності залишковий зсув залишку -> застосувати модифікований спектр LPC до модифікованого залишку). Використання подання мови, яке може бути повернене назад до часової області і яке забезпечує хороший поділ між просодією і фонемою, є ключовим тут! Нарешті, за умови, що у вас є доступ до узгоджених записів ораторів A і B, що говорять про одне і те ж речення, є статистичні моделі, які одночасно вирішують кроки 1, 2, 3 і 4 в одній єдиній процедурі оцінки моделі.
Я можу пізніше повернутися з бібліографією, але дуже гарним місцем, щоб почати відчувати проблему, і загальна рамка, яка використовується для її вирішення, - це система Стіліану, Мулайн та Каппе "Система перетворення голосу на основі імовірнісної класифікації та гармоніки плюс модель шуму ".
Наскільки мені відомо, не існує широкого програмного забезпечення, що виконує перетворення голосу - лише програмне забезпечення, що модифікує властивості вихідного голосу - як параметри довжини кроку та голосового тракту (наприклад, трансформатор IRCAM TRAX) - з яким вам доведеться зіпсуватись, сподіваючись зробити свій запис звуку ближче до цільового голосу.