Синхронизирайте устата на; хуманоиден робот Quai Lab
Тази статия представя решение за синхронизира движението на устата на робота хуманоид с гласа си. Звукът ще се обработва в реално време на неусилен източник: компютър, телефон, изход за таблет и др.
Целта е управлението на сервомотор, задействащ отварянето/затварянето по вертикалната ос на муцуната. Това движение е много опростено в сравнение с движенията на устните/челюстите ... За повече реализъм също би било необходимо разпознаването на фонемите да имитира начина, по който се произнасят, като се вземе предвид и говоримия език (английски, френски и др. .).

Това е извън нашата тема, тук ще се задоволим с ефект, близък до този, произведен от кукловоди и вентрилоквисти в анимацията с тяхната ръка.
Изтеглете кода на Arduino InMoov синхрон на устата
Много играчки симулират движението на устата, не ми се наложи да търся дълго, за да намеря в детските играчки Барби с жак за аудио връзка, за която имах за момент надеждата да възстановя веригата ... но уви синхронизирането работи правилно само за две или три предварително записани изречения.
Този тип играчки вероятно имат движенията, които трябва да се правят в паметта, като по този начин се избягва всякаква обработка на сигнала. Жалко ..., но поне Барби беше спасена 🙂
Запазен принцип
Гласовият аудио сигнал се колебае между стойностите отрицателни и положителни с повече или по-голяма амплитуда. За управление на серво мотора ще изчислим ефективната мощност (във ватове) на сигнала, наричан още RMS (на английски Root Mean Square), за да придадем повече или по-малка амплитуда на отварянето на челюстта според силата на гласа. Системата ще се самокалибрира със затворено положение на устата и сервомоторът е изключен, когато не се издава звук.
Давам ви формулата за изчисляване на RMS за функция през интервал между T1 и T2.
С f (t) нашият изваден аудио сигнал и (T1-T2) продължителността на нашата семплиране.
Някои напомняния за гласа:
Гласът има честота между 800 Hz и 3 килограма Hz (човешкото ухо възприема честоти до 20 khz).
Аудио сигналът на изхода на компютър е доста слаб, обикновено между -0,5 и + 0,5v, и трябва да се усилва при извеждане към външни високоговорители.
Минималната честота за дигитализиране на сигнал трябва да е два пъти по-голяма от тази на сигнала, за да няма загуба (теорема за вземане на проби на Найквист - Шанън), на CD също се взема проба на звука при 44,1 kHz на 16 бита.
Визуализация на аудио сигнала на входа (червен) и след компенсиране от 0.5V готов за дигитализация
Нашата цел е да изградим тази система на базата на Arduino Uno, знаем, че аналоговите входове (A0-A5) на arduino измерват напрежение между 0 и 5v на 10 бита, т.е. 1024 стойности.