Слухаємо пташок з 1905-го року. Відновлення старих записів


Не так давно на Хабре проскакувала новина про те, що вченим вдалося відновити одну з дуже старих записів, зроблену ще в 1905 році, не пошкодивши при цьому носій. Основним досягненням тут є саме факт цілісності носія, так як запис зроблена була не аби на чому, а на восковий валик. Це чи не найперший винайдений спосіб запису\відтворення звуку, який широко використовувався. До цього носієм були скляні циліндри з сажею (відтворювати їх правда не вміли), потім покриттям стала фольга і лише потім віск.

Чому це все так круто і технологічно, а також які у вчених були труднощі з відновленням, ви можете почитати в оригінальній новини, а я вам розповім про те, як я зацікавився цією записом і взявся її трохи підлатати. Загалом, якщо вам цікавий процес реставрації всякого аудіо-раритету, ласкаво просимо під кат.

На мій подив, оригінальна запис виявилася досить гучною, хоч і стверджувалося, що вона була оброблена різними шумозаглушуючими алгоритмами і т. д… Варто зазначити, звичайно, що порівняно з іншими відновленими з воскових циліндрів записами, ця справді була дуже гарна — за якістю вже цілком можна порівняти з першими пластинками. Однак, як відомо, найкраще — ворог хорошого.

Я взагалі любитель старих довоєнних пісень, і найчастіше доводиться трохи оновлювати звук добутих із глибин мережі експонатів. Зокрема, наприклад, цим страждають записи пісень зі старих фільмів, так як там і сам оригінал фільму не блищить якістю звуку.

У розглянутому нами випадку, ми маємо, фактично, зліпок доріжки, зроблений лазером. Я зараз не розглядаю той факт, що господа археологи теж застосовували якісь процедури до вихідного звуку, проте буду вважати що вони намагалися максимально точно відтворити оригінал. Так як лінійні розміри доріжки, в даному випадку, досить великі, говорити про погрішності оцифровки практично не доводиться, тим більше для вихідного файлу обрана досить висока частота дискретизації, приблизно в чотири рази перевищує частоту звуків у запису. Значить можна вважати, що перед нами практично ідеальний зліпок оригінальної звукової хвилі.

Тут ми стикаємося з особливостями матеріалу і самого способу відтворення.

Факт номер раз: матеріал, з якого зроблений циліндр досить м'який (віск), на ньому, навіть якби він ідеально новим, неможливо відобразити звуки з довжиною хвилі менше певного значення.
Факт номер два: крім матеріалу вносить свої корективи і сама технологія запису на такі циліндри — звук писався буквально голкою по циліндру.
Факт номер три: відтворення такого циліндра саме по собі руйнувало носій.

Перший факт дає нам обмеження максимальної частоти запису приблизно в 5-6 кГц і, як ми побачимо надалі, це дуже важливо. А другий і третій факт повідомляють, що про збереження крутизни фронтів і формі хвиль можна особливо не турбуватися — не та точність, спочатку.

Для початку включимо спектральне подання сигналу і візьмемося за еквалайзер (а еквалайзер адже це наше все).



Що ми бачимо на спектрограмме? Частота дискретизації файлу у нас аж 22000 кГц, при цьому ніяких звуків в запису, як ми бачимо, немає вище 4.5 кГц, чого і слід було очікувати (див. факт номер раз). Однак, якщо придивитися уважніше, якась бруд все-таки просочується вище (щоб краще було видно, підвищив контрастність і яскравість в квадраті, обведеним червоним). Звідки воно береться незрозуміло, але, не вдаючись у деталі ми першим же ділом можемо з чистою совістю порзать все вище т. н. «частоти Найквіста» для нашої частоти дискретизації (11 кГц). Так як запас там ще пристойний, я не став розмінюватися на дрібниці і прибрав всі вище 8 кГц, а також нижче 100 Гц, так як там, судячи з спектрограмме, теж нічого путнього не було.

Трохи поміркувавши, я підійшов до цього моменту ще більш радикально, а саме — не став морозиться з еквалайзером, а почав все з початку і відразу змінив частоту дискретизації файлу до 11 кГц.

Далі, не мудруючи лукаво, скористаємося інструментом, який є в багатьох сучасних аудіо-редакторах: Noise Reduction. Ідея проста — виділяємо місце в треку, де у нас немає нічого крім шумів. Далі створюємо патерн цих шумів (Capture Profile). У найпростішому випадку вам буде достатньо одного повзунка Noise Reduction Level.

Про те, для чого потрібні всі інші параметри, можна дізнатися, наприклад, ось з цього відео: Цікавий видос з сайту Adobe. Англійською.

Він там, правда, каже, що у них, нібито оновився движок (мова про версії CS5.5) і вони тепер вміють не створювати зайвих артефактів при шумозаглушенні, але ми-то з вами знаємо, що різниця практично відсутня. І налаштування все ті ж, хіба що віконце в новій версії перемалювали.

Є ще деякі нюанси які цей харизматичний мужик у відео не зачіпає, наприклад «ширина вікна» для перетворення Фур'є (FFT Size). Якщо не вдаватися в подробиці, при позбавленні від випадкових (це важливо) шумів, слід прагнути використовувати як можна більше число точок (Snapshots in profile), або при рівному FFT Size, або приблизно в два рази менше. Все це означає, що для якісного «шумового профілю» нам потрібен як можна більш довгий відрізок, в якому є лише шуми. Взагалі, чим гарний Noise Reduction, так це тим, що його можна використовувати не тільки для шумів, але і для різних фонових звуків (шум лісу, дощу, etc.)

насправді, в тому ж SoundForge є і більш цікаві інструменти, наприклад можливість віднімати з сигналу хвилю довільної форми, але я починав користуватися Audition'ом, ще в бородаті часи, коли він звався CoolEdit, і тоді SoundForge навіть близько нічого схожого не міг, а тепер мені вже лінь братися за щось нове.

Я звично взявся шукати у файлі відрізок з шумами, але виявилося, що вони занадто короткі і при формуванні вибірки з ним, можна було скласти тільки занадто короткі патерни. З-за цього або шумозаглушення не було чути взагалі, або з'являлися шалені артефакти. Тут я став думати, як же мені з цим бути. А поки думав, вирішив зайти з іншого кінця.

Найбільш дратівливими в нашому випадку є м'які клацання, а також періодичний шум, наступного відразу за клацаннями. Я думаю цей ефект з'явився внаслідок відхилень поперечного перерізу циліндра від форми кола, або вісь не рівно стояла. В якийсь момент, при записі, голка занадто глибоко входила у віск (початковий щелчок) і далі короткий відрізок йшла нерівності (триває кілька разів після клацання характерний шум), далі циліндр робив повний оборот і шум повторювався. Як ми побачимо далі, від цього шуму нам все-таки вдасться позбутися з допомогою Noise Reduction, однак, просуваючись по файлу і переглядаючи форму хвилі, я помітив, що тут присутні ще й досить дивні косяки, схожі на характерні спотворення A\B-підсилювачів. Дуже характерний приклад на заголовному скріні статті, але там ще досить спірно, тому що у того спотворення занадто довгий період (я вибрав навмання з файлу). А ось на наступному скріні видно дуже добре що я маю на увазі.



Про те як ці штуки (не)треба лікувати і чому, я вирішив написати окремо, а щоб стаття не надто розрослася, сховав під спойлер. Можна пропустити цей шматок, це майже ліричний відступ.

Про те, як прибирати спотворення не треба і чомуНа скріні вище не дуже добре видно, так як я трохи відсунувся для масштабу, але тривалість такого коливання — жалюгідні 80 мікросекунд. Проробляємо нехитрі обчислення:

T = 0.00008 мс (період)
V = 340 М/с (швидкість звуку в повітрі)
L = V * T = 0.0272 М (довжина хвилі)
F = V / L = 12500 Гц (частота)


Насправді, тут все можна скоротити до банального F=1/T, але це ж Хабр, тут все повинно бути по хардкору.

Саме час згадати перший факт, озвучений раніше: очевидно, що в подібній запису 12-ти килогерцам взятися нізвідки, так що напевно це теж шуми. Тут можна було б звернутися до спектрометру, однак, так як ці коливання мають зовсім мізерну амплітуду, а крім того, їх, чомусь, занадто багато, на спектральному поданні вони зовсім не виділяються і схожі на темний-темний точковий фон (картинка з більш контрастним квадратом це якраз воно і є).

Навряд чи такі косяки виникли із-за руху голки. Я вважаю це мікро-тріщини на воску, які з'явилися, швидше за все, з-за часу.

В ідеальному випадку, може здатися ніби було б круто просто взяти і вирізати такі місця, причому цілими періодами: так як ці коливання припадають на місця, де у нас фактично дефекти запису, однозначно можна сказати, що ніякої корисної інформації вони не несуть, а так як нам не принципово збереження оригінального таймінгу композиції, ми могли б сміливо їх видаляти — в середньому вони тривають не більше 100 мкс, це зовсім мізерний проміжок, на слух таке помітити нереально.

Тільки от, ми живемо не в ідеальному світі (хоча, це як подивитися), так що це досить погана ідея. Справа в тому, що при видаленні ділянки, відбувається т. н. smoothing, тобто згладжування рівнів сусідніх точок. Так як це у нас цифра, такі дрібні нерівності після згладжування це самий натуральний/Год шум. Ми його трохи обмежили знизивши частоту дискретизації файлу, але тим не менш. Тут можна було б спробувати порізати такий шум еквалайзером після всіх вилучень, але, знову ж таки, це змінить форму хвилі, а в силу того що звук у нас цифровий, тут все впирається в математику — зробити еквалайзером рівний зріз по потрібній частоті просто так не вийде. Крім того, як я говорив вище, таких спотворень занадто багато, чого ручками ось так все правити практично безглуздо — такі фрагменти мають тривалість близько 100 мкс, а значить для того щоб це «поліпшення» було хоч трохи помітно на слух (теоретично), вам потрібно видалити просто неймовірну кількість таких ділянок. При цьому, так як в іншому файлі ці спотворення нікуди не подінуться, «чистий відрізок» в кілька мілісекунд буде банально непомітний на тлі гучних. І ще бочка дьогтю — результати згладжування сотень видалених відрізків створять такий шум, що початковий варіант (який був без правки) здасться вам навіть краще того, що у вас в підсумку вийде.

Крім усього перерахованого, хвилі часом інтерферують один з одним абсолютно неймовірним чином (вибачте за тавтологію), чого однозначно зрозуміти де конкретно спотворення, а де, скажімо африкати, дуже складно — для цього, як мінімум, потрібно добре знати особливості людської мови, формування гармонік і все інше. Так що, навіть якщо б не smoothing, при такому віддаленні є неиллюзорный шанс банально попсувати початковий звук, зламавши інтерференційну картину.

І тим не менш, ліки від даних болячок є — нижче я покажу як підчищати звук, в тому числі і від подібних спотворень.


В один з моментів, коли я розглядав спектрограмму сигналу, до мене дійшло, що в кінці пісеньки, є досить тривалий момент, коли нічого, крім «свисту птахів», не звучить. А цей свист на спектрограмме має цілком однозначну смугу.



А значить ми можемо схитрувати. Расчехляем еквалайзер, виставляємо максимальний Range (це динамічний діапазон, простіше кажучи, на скільки дБ буде посилена\ослаблена та або інша частота) і ріжемо частоти на яких у нас співають птахи, а все що нижче\вище залишаємо.

Так як навіть максимального динамічного діапазону не вистачає, щоб повністю прибити всіх птахів, повторюю еквалайзер двічі. Взагалі, про те як він працює, і чому так все відбувається, можна окрему статтю писати, тільки, боюся, я не настільки добре знаю математику алгоритмів щоб на цю тему мудрувати.



Отже, тепер ми маємо досить довгий відрізок з одним лише шумом… і, правильно, повертаємося до того, з чого починали. Захоплюємо профіль шуму (після захоплення натисніть close, а не cancel, бо інакше всі налаштування скинуться до попереднім використаним).

Крім Noise Reduction, ще є фільтр Hiss Reduction, він, як випливає з назви, допоможе нам позбутися від свисту і всякого різного подібного. Налаштування там майже аналогічні шумодаву, хіба що FFT Size якось по іншому працює, а як саме я так і не розібрався, тому дію тут емпіричним шляхом, чого і вам раджу. Для Hiss Reduction теж необхідно вказати базовий рівень шуму (кнопка Get Noise Floor), так от, цей базовий рівень захоплювати стоїть на тому ж відрізку, на якому ми захоплювали шумовий профіль.

Далі випробовуємо два останні дії (еквалайзер на пташок), потім виділяємо весь файл і послідовно застосовуємо до нього Noise і Hiss Reduction.

Після застосування цих двох різновидів шумодава, ми отримуємо вже цілком придатний до споживання результат. Хіба що, невеликі артефакти на кінцях спектру з'являються. Тут нам на допомогу знову приходить еквалайзер — нещадно розрізаємо все нижче 150 Гц і вище 4.5 кГц.

Стало помітно тихіше, але клацання досі чути. Тепер у справу знову йде спектрометр. Якщо на даному етапі послухати файл і спостерігати за спектрограммой, буде очевидно, що в момент клацання шум має досить широкий спектр, а ось мелодія, навпаки йде чіткими хвилястими лініями (нижче, для наочності виділив один клацання червоним).



Для початку усунемо апмлитудные сплески на місцях клацань. Для цього переключається в режим відображення форми сигналу. Як правило, це всього один «зашкалює» період хвилі.



У разі, якщо цей період був просто занадто гучним, то я просто робив його тихіше. Якщо він був ще й сильно спотворений, то видаляв (лінь виправляти кожен, чого вже тут).



А тут я розповім як буквально в два клацання правити амплітуду таких стрибків.

Хинт про те, як зручно юзати обране в AuditionВласне, ідея тривіальна. У Audition для довільного ділянки запису ми можемо задавати певний графік зміни гучності (Amplitude and Compression -> Envelope). Тобто наприклад можемо зробити плавне загасання, або різка поява. Ну загалом, намалювати можна, що душі завгодно. Зазвичай цей інструмент застосовується для великих масштабів. Однак, я придумав як його можна використовувати на микромасштабах. Відкриваємо «Вибране» (Вікно->Вибране) і створюємо новий пункт. Вибираємо ефект Envelope і правимо налаштування. У налаштуваннях створюємо найпростіший графік-дугу, з однією єдиною точною-мінімумом рівно по центру графіка (50% часу, 50% амплітуда). Придумуємо ім'я, зберігаємо і рухаємося до нашого першого клацання.

Тепер вам треба всього лише вибрати на максимальному наближенні один період хвилі «клацання», який зашкалює і два рази клацнути по створеному ефекту в обраному. Вуаля — клік по рівню стає приблизно дорівнює оточуючим його коливань. Такий собі «ультрапрецизионный софтлимиттер». У принципі можна досягти аналогічного ефекту і Hard Limiter'му, але він поріже під один рівень всі звуки в треку, а нам треба різати тільки непотрібні. Крім того там ще є ряд нюансів, наприклад, часто просто неможливо підібрати такі параметри, при яких лимиттер ріже тільки те що потрібно, наприклад, коли клацання занадто різкі.


Після того, як самі гучні клацання були переможені, прийшов час позбавлятися від дрібних спотворень, які є по всьому файлу. У попередньому спойлері я вже розповів як їх видаляти не варто, а зараз розповім як робити це більш-менш правильно.

Тут нам знову знадобиться спектральне відображення сигналу. Якщо пильним поглядом окинути панель інструментів в цьому режимі, в очі кидається річ, начебто зовсім не пов'язана з світом аудіо-редакторів. Кисть. Вона нам і потрібна.

Вона дозволяє видаляти довільні ділянки на спектрі. Ніби динамічний понад-точний еквалайзер.

Пам'ятаєте я писав, що клацання мають широкий спектр, а ось музичні звуки добре читаються на їх фоні? Зараз ми цим і скористаємося. Вибираємо цю кисть, шукаємо момент де у нас йде такий ось стовпчик шуму на тлі музики. Далі малюємо цієї пензлем у місцях де у нас тільки шум, не зачіпаючи при цьому музичну лінію. Далі натискаємо delete, потім пересуваємо повзунок виділення щоб переглянути че у нас вийшло, або просто починаємо малювати пензлем на новому місці. І бачимо, що там, де тільки що видаляли, у нас тепер темрява, тобто тиша.



Далі повторюємо цю процедуру для всіх місць, де все ще виразно чутні клацання. В принципі, при належній наполегливість, можна взагалі у всіх місцях викорчувати взагалі всі, залишивши тільки гармоніки.

Тільки це невдячне заняття, насправді. Тому що в реальності звуки мають набагато більш складну природу і крім шумів між головними гармоніками часто присутні менш важливі призвуки. Але незважаючи на те, що вони менш важливі, вони додають звуку більш природне забарвлення і характерність, чого можна позбутися, якщо взятися випилювати взагалі все не гармонійні звуки.

До речі, пам'ятаєте я писав про те, що при видаленні періодів з'являється якийсь шум, якому ніби як і взятися нізвідки? Довго працюючи пензлем у спектрографі, можна зауважити, що навіть у цьому режимі такий шум теж іноді з'являється навколо віддаленої області незрозуміло звідки з'являються білі ділянки — це воно і є.

Отже, в якості фінальних штрихів проганяємо Automatic Click remover в режимі трохи сильніше середнього (верхній повзунок 30, нижній 75) — він прибере різкі удари, які могли з'явитися в результаті наших маніпуляцій. І еквалайзером ще раз зрізаємо все вище 5 кГц і нижче 100 Гц. Далі нормалізуємо файл до 100%. Я ще видалив початок файлу, буквально півсекунди десь, там все одно після всіх наших маніпуляцій нічого не залишилося.

До речі, в оригінальній статті не було згадки, так і тегів у файлі проставлені не були, виконавці оригіналу: Harlan And Belmont.

А G. Byron Harlan навіть є на discogs.com.

— Ось, для порівняння, посилання на оригінал: yadi.sk/d/sLKZlyp2eQ2YK
А ось мій результат: yadi.sk/d/lPlJJaEQeQ2Zc

Сподіваюся вам було цікаво.

P. S. Заздалегідь вибачаюся за відсутність позначень осей на скронях. Там де синій — там скрізь по вертикалі Гц, де зелений — Дб. По горизонталі скрізь секунди.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.