Python для творческих. Звук на твоей стороне

- -
- 100%
- +

Предисловие
Почему я написал эту книгу
Я сидел в наушниках уже четвёртый час. Передо мной на экране была волновая форма моего голоса — неровная линия с провалами и пиками. Я в сто двадцатый раз выделял мышкой очередное «эээ» и нажимал Delete. Мой первый подкаст должен был выйти три дня назад. Но я всё ещё монтировал его. Не потому, что я перфекционист. А потому что я не знал, что эту работу можно автоматизировать.
Я был программистом. Я писал код каждый день. Я автоматизировал отчёты для бухгалтерии, рассылки для маркетинга, сбор данных для аналитики. Но когда дело касалось моего собственного контента, моего голоса, моего творчества, я почему-то вёл себя как человек, который никогда не слышал об автоматизации. Я сидел и вручную вырезал паузы. Вручную выравнивал громкость. Вручную чистил шум. Как будто Python не существовал. Как будто компьютер был просто дорогим проигрывателем, а не мощнейшим инструментом для работы со звуком.
В какой-то момент я остановился и спросил себя: почему? Почему я автоматизирую скучные таблицы и не автоматизирую собственный подкаст? Ответ был простым и неприятным: я не знал как. Я умел программировать, но я не знал библиотек для работы со звуком. Я не знал, что звук можно представить в виде массива чисел. Я не знал, что шум можно вычесть математически. Я не знал, что громкость измеряется в LUFS и что под каждую платформу есть свой стандарт. Я был программистом, но в мире звука я был новичком.
Тогда я начал разбираться. Сначала медленно, методом проб и ошибок. Первые скрипты портили звук так, что слушать было невозможно. Голос после шумоподавления превращался в бульканье робота. После ускорения — в писк бурундука. После нормализации громкости становился то тише шёпота, то громче сирены. Но я продолжал. Потому что каждая удачная обработка экономила мне не минуты — часы. Час ручного монтажа превращался в тридцать секунд работы скрипта. Два часа выравнивания громкости — в одну команду. Полдня чистки шума — в запуск функции и ожидание в течение минуты.
Через полгода у меня был набор скриптов, которые делали всю черновую работу за меня. Я записывал подкаст, запускал конвейер, шёл пить кофе. Через десять минут в папке лежал готовый файл. Чистый звук, ровная громкость, никаких паразитов, музыка на фоне ровно там, где нужно, и ровно такой громкости, чтобы не мешать. Мои друзья-подкастеры спрашивали: «Слушай, а кто тебе звук сводит? Дорого?» Я отвечал: «Python». Они не верили. Тогда я показал им скрипты. И они попросили меня научить их.
Эта книга выросла из тех самых объяснений. Из желания передать знание, которое превращает рутину в магию. Я писал её для людей, которые никогда не программировали. Для блогеров, подкастеров, видеомейкеров, преподавателей, которые записывают лекции — для всех, кто создаёт контент и устал тратить время на техническую обработку. Я писал её так, как объяснял бы другу за чашкой кофе: просто, с аналогиями, без заумных терминов, с шутками там, где это уместно.
Что внутри
В этой книге девять глав. Каждая глава — это один навык. Мы будем двигаться от простого к сложному, и каждая следующая глава опирается на предыдущую, но при этом самодостаточна. Если вам прямо сейчас нужно только убрать шум — открывайте Главу 4, там всё есть. Если нужно только выровнять громкость — Глава 3 к вашим услугам. Книгу можно читать последовательно, а можно использовать как справочник.
В первой главе мы познакомимся со звуком. Узнаем, что для компьютера звук — это просто список чисел, и научимся загружать эти числа в Python. Мы напишем первый скрипт, который расскажет о записи всё: длительность, громкость, количество тишины. Это фундамент.
Во второй главе мы освоим аудиомонтаж кодом. Научимся отрезать лишнее от начала и конца, склеивать несколько файлов в один, добавлять паузы, выравнивать громкость фрагментов. Создадим скрипт, который собирает эпизод подкаста из заготовок.
В третьей главе мы разберёмся с громкостью. Узнаем, что такое LUFS и почему просто сделать громче — плохая идея. Научимся нормализовать громкость под стандарты YouTube, Spotify и подкастов. Освоим компрессию — эффект, который делает голос плотным и профессиональным.
В четвёртой главе мы объявим войну шуму. Освоим три метода шумоподавления: от простого гейта до продвинутого спектрального вычитания. Научимся записывать образец шума и использовать его для очистки всей записи.
В пятой главе мы займёмся чистотой речи. Напишем умный анализатор пауз и инструмент для их сокращения. Создадим детектор слов-паразитов, который находит «эээ», «нууу» и «как бы» по четырём признакам. Научимся либо удалять их автоматически, либо помечать для ручной проверки.
В шестой главе мы перейдём к творческой обработке. Научимся менять скорость речи без изменения высоты голоса и наоборот. Создадим голоса персонажей: робота, демона, белки, великана, инопланетянина. Освоим эффекты телефонного разговора и большого зала. Поймём, как комбинировать эффекты для создания разных голосов из одного.
В седьмой главе мы подружим голос с музыкой. Научимся автоматически приглушать фоновую музыку, когда вы говорите, и плавно возвращать её в паузах. Освоим частотный дукинг — продвинутую технику, которая освобождает в музыке место для голоса.
В восьмой главе мы сделаем финальную полировку. Применим эквалайзер для формирования красивого частотного баланса. Используем многополосный компрессор для тонкой настройки динамики. Добавим аналоговую теплоту через насыщение. Проведём голос через полный конвейер мастеринга, который превращает хороший звук в студийный.
В девятой главе мы соберём всё вместе в один большой финальный конвейер. Напишем главный скрипт книги, который принимает сырую запись и через один запуск выдаёт полностью готовый продукт. Создадим систему конфигурационных файлов, чтобы не менять код для каждого нового проекта.
В конце книги — словарь терминов, справочник по библиотекам и шпаргалка по командам.
Как читать эту книгу
Книга построена по единому принципу. Каждая глава открывается разделом «О чём эта глава», где я рассказываю, что мы будем делать и зачем. Затем идёт раздел «В чём проблема» — описание ситуации из жизни, с которой вы наверняка сталкивались. Потом теория, объяснённая на пальцах, без формул и сложных терминов. Затем код — каждый скрипт с подробным разбором каждой строчки. После кода — раздел «За кулисами», где для любопытных раскрывается внутренняя механика алгоритмов. Его можно пропустить без ущерба для практического результата. Затем «Лаборатория ошибок» — что может пойти не так и как это исправить. И наконец «Творческое задание» — идеи для самостоятельных экспериментов.
Для работы с книгой вам понадобится компьютер и желание. Всё остальное — Python, библиотеки, примеры — я дам. Код из книги можно копировать и вставлять. Он протестирован и работает. Вам не нужно быть программистом. Вам нужно быть человеком, который хочет, чтобы его контент звучал лучше.
Благодарности
Я благодарю всех создателей контента, которые делились своими проблемами со звуком и вдохновляли меня на поиск решений. Я благодарю сообщество разработчиков открытого программного обеспечения, создавших библиотеки librosa, numpy, noisereduce и десятки других инструментов, на которых построена эта книга. Я благодарю вас, читатель, за то, что взяли эту книгу в руки и решили инвестировать время в улучшение своего контента. Это решение окупится сторицей.
Поехали.
Введение. Почему Python, а не Audacity?
Для кого эта книга
Представьте: вы записали классное видео для YouTube. Свет выставлен идеально, сценарий выверен до секунды, шутки отрепетированы перед зеркалом. Вы нажимаете «экспорт» и с предвкушением ждете реакцию зрителей.
А потом открываете комментарии. И вместо обсуждения ваших гениальных мыслей видите: «Ничего не слышно», «Звук как из бочки», «Автор, купи нормальный микрофон».
Обидно? Еще как. Знакомо? Большинству контент-креаторов — да.
Эта книга для тех, кто хочет управлять звуком так же легко, как текстом или картинкой. Вы не должны становиться профессиональным звукорежиссером. Вы не обязаны тратить часы на изучение сложных программ вроде Audacity, Adobe Audition или Reaper. Ваша задача — создавать контент. А звук должен просто работать. И Python сделает его таким.
Почему именно Python, а не готовый софт с ползунками и кнопками? Давайте разберемся.
Три причины выбрать Python для работы со звуком
Причина первая: автоматизация.
Предположим, у вас есть подкаст из двадцати выпусков. В каждом выпуске нужно убрать фоновый шум от кондиционера, нормализовать громкость и вырезать неловкие паузы. В Audacity вы делаете это вручную: открываете файл, применяете эффект, ждете, сохраняете, открываете следующий. Двадцать раз.
На Python вы пишете скрипт один раз. И запускаете его для всех файлов одной командой. Пока Audacity еще открывается, ваш скрипт уже закончил работу и пошел пить кофе.
Причина вторая: контроль.
В графическом редакторе вы двигаете ползунок «Убрать шум» и надеетесь на лучшее. Вы не знаете, что именно происходит со звуком. Вам говорят: «Применить шумоподавление?» — вы нажимаете «Да». Результат иногда радует, иногда огорчает, но вы не понимаете почему.
Код не скрывает от вас ничего. Вы говорите: «Вот этот диапазон частот ослабить на 12 децибел». И он ослабляет именно этот диапазон. Вы говорите: «Найти участки тишины длиннее полсекунды и обрезать их до четверти секунды». И он делает именно это. Полный контроль. Никакой магии.
Причина третья: воспроизводимость.
Выпустили подкаст. Через неделю поняли, что в третьей минуте остался щелчок, который вы не заметили. В Audacity это означает: открыть проект, найти то место, исправить, снова экспортировать. Минут десять ручной работы.
В Python это означает: подправили одну строку в скрипте, перезапустили — готово. Ваш процесс обработки звука становится документированным, повторяемым и неубиваемым. Вы всегда можете вернуться и улучшить результат, не начиная с нуля.
Что такое звук с точки зрения Python
Давайте договоримся о главном прямо сейчас. Когда вы слышите слово «код», у вас в голове, возможно, всплывает образ хакера в капюшоне, который стучит по клавишам под зеленые строчки, падающие сверху. Забудьте.
Код — это просто инструкция. Написанная на человеческом языке, просто немного более строгом, чем обычно.
Вот пример инструкции для человека:
«Возьми аудиофайл, найди в нем все места, где громкость ниже порога слышимости, и удали их».
А вот та же инструкция для Python:
python
import librosa
import soundfile as sf
y, sr = librosa.load('podcast.wav')
y_trimmed, _ = librosa.effects.trim(y, top_db=20)
sf.write('podcast_clean.wav', y_trimmed, sr)
Прямо сейчас это может выглядеть непонятно. Но к концу этой книги вы будете читать такой код как родной. Обещаю.
Звук для Python — это просто массив чисел. Представьте себе очень длинный ряд значений громкости, измеренных сорок четыре тысячи раз в секунду. Каждое число — это положение мембраны вашего динамика в конкретный момент времени. Положительное число — мембрана идет вперед, отрицательное — назад, ноль — покой.
Ваш голос, музыка, шум ветра, лай собаки за окном — все это превращается в столбики чисел. И Python умеет с этими столбиками работать быстрее, чем любой графический редактор.
Что вам понадобится
Никакого специального оборудования. Никаких платных программ. Только три вещи:
Первое: компьютер.
Подойдет любой — Windows, Mac, Linux. Python работает везде одинаково. Если ваш компьютер способен открыть браузер и не зависнуть, он справится с обработкой аудио.
Второе: Python версии 3.9 или новее.
Если у вас еще нет Python — не пугайтесь. Следующий раздел проведет вас через установку за десять минут. Это действительно просто: скачали установщик, нажали «Далее» несколько раз, готово.
Третье: желание автоматизировать рутину и вернуть себе время.
Оно у вас уже есть, раз вы открыли эту книгу.
Как устроена эта книга
В этой книге девять глав. Каждая глава — это одна конкретная задача, с которой сталкивается любой создатель контента. Никакой абстрактной теории в вакууме. Только реальные проблемы и их решения.
Каждая глава построена по одному и тому же принципу:
В чем проблема. Я описываю ситуацию из жизни. Возможно, вы узнаете себя.
Как мы будем ее решать. Коротко о том, какой инструмент применим и почему.
Код. Пошагово, с объяснением каждой строчки. Вы можете копировать его и запускать сразу.
Лаборатория ошибок. Что может пойти не так и как это исправить. Потому что идеальных запусков с первого раза не бывает ни у кого.
За кулисами. Для любопытных: как это работает внутри. Этот раздел можно пропустить, если хочется просто получить результат. Но если вы хотите понимать, что именно происходит со звуком, — welcome.
Творческий практикум. Что еще можно сделать с этим же инструментом, чтобы ваш контент стал еще круче.
Чек-лист. Краткое резюме главы. Пробежались глазами — вспомнили главное.
Книгу можно читать последовательно, от корки до корки, а можно использовать как справочник: открыли нужную главу, скопировали код, решили проблему, закрыли. Оба подхода рабочие.
Установка Python за десять минут
Давайте сделаем это прямо сейчас, чтобы потом не отвлекаться. Выполните следующие шаги — и через десять минут Python будет готов к работе.
Шаг 1. Скачиваем Python.
Откройте официальный сайт python.org. Прямо на главной странице вы увидите большую желтую кнопку «Download Python 3.x» — где x заменяется на самую свежую версию. На момент написания книги это 3.12, но подойдет любая версия, начиная с 3.9. Смело нажимайте кнопку. Скачивается установщик.
Шаг 2. Запускаем установку.
Нашли скачанный файл, запустили. Внимание: на первом экране установщика есть важная галочка внизу — «Add Python to PATH». Обязательно поставьте ее. Если пропустите — Python установится, но командная строка не будет знать, где он лежит. Поставили галочку? Жмите «Install Now».
Подождите минуту. Готово.
Шаг 3. Проверяем.
Теперь проверим, что все работает. Откройте программу «Командная строка» на Windows (нажмите Win, начните вводить cmd, нажмите Enter) или «Терминал» на Mac и Linux.
В открывшемся окне введите:
bash
python --version
И нажмите Enter. Если вы увидели строчку вроде Python 3.12.1 — поздравляю, Python с вами.
Если вы увидели ошибку — скорее всего, вы пропустили галочку «Add Python to PATH». Ничего страшного: переустановите Python и на этот раз обязательно поставьте галочку. Это самая частая проблема, она решается за две минуты.
Шаг 4. Устанавливаем библиотеки.
Сам по себе Python — это как пустая кухня. Плита есть, а продуктов нет. Нам нужно «закупить продукты» — библиотеки для работы со звуком.
В той же командной строке выполните три команды подряд, нажимая Enter после каждой:
bash
pip install librosa
pip install soundfile
pip install noisereduce
Пойдут строчки с процентами, скачиваниями, установками. Когда все закончится, командная строка снова будет ждать вашего ввода. Это значит — все установлено успешно.
Если команда pip не распознается — попробуйте pip3 вместо pip. Это случается на некоторых Mac и Linux. То есть вводите pip3 install librosa и так далее.
Шаг 5. Ваш первый скрипт.
Давайте удостоверимся, что все работает как надо. Создайте на рабочем столе папку audio_book. Внутри нее создайте текстовый файл с именем hello_sound.py.
Внимание: расширение должно быть именно .py, а не .txt. Windows по умолчанию скрывает расширения файлов, поэтому то, что вы видите как hello_sound, на самом деле может быть hello_sound.py.txt. Чтобы этого избежать, откройте проводник, перейдите на вкладку «Вид», поставьте галочку «Расширения имен файлов». Теперь вы видите все расширения и можете создавать .py файлы правильно.
Откройте hello_sound.py в любом текстовом редакторе. Можно в стандартном Блокноте, но лучше скачать бесплатный VS Code — он умеет подсвечивать код разными цветами, что сильно облегчает жизнь.
Вставьте в файл эти четыре строки:
python
import librosa
print("Библиотека librosa готова к работе!")
print("Звук на твоей стороне.")
Сохраните файл. Теперь вернитесь в командную строку. Нам нужно перейти в папку audio_book. Если она у вас на рабочем столе, команда будет такой:
bash
cd Desktop/audio_book
Нажмите Enter. Командная строка теперь находится внутри вашей папки. Запустите скрипт:
bash
python hello_sound.py
Если вы увидели на экране:
text
Библиотека librosa готова к работе!
Звук на твоей стороне.
— то всё готово. Вы только что написали и запустили свой первый Python-скрипт. Добро пожаловать в мир, где звук вам подчиняется.
Пара слов перед стартом
Эта книга писалась для человека, который никогда не программировал. Или программировал когда-то давно и с тех пор забыл всё, кроме слова «переменная». Я буду объяснять каждую строчку кода, как если бы вы увидели ее впервые в жизни. Если вы уже знаете Python — отлично, читать будет еще быстрее. Но база заложена с расчетом на полного новичка.
Второе: не бойтесь ошибок. Ошибка в коде — это не провал. Это способ языка сказать: «Я тебя не понял, давай уточним». Программисты с двадцатилетним стажем до сих пор гуглят сообщения об ошибках ежедневно. Это нормальная часть работы, а не показатель некомпетентности.
Третье: в каждой главе вы будете получать готовый работающий инструмент. Берите его, применяйте к своему контенту, улучшайте, ломайте, чините. Код из этой книги — ваш. Никаких лицензий, никаких ограничений.
Что вы будете уметь после этой книги
Давайте начистоту. Я не буду обещать, что после этой книги вы станете звукорежиссером уровня голливудских студий. Это было бы враньем. Но вот что вы будете уметь точно — конкретно и измеримо:
Вы сможете взять сырую запись своего голоса, сделанную в обычной комнате с обычным микрофоном, и превратить ее в чистый, сочный, профессионально звучащий трек. Не за час ручной работы. За тридцать секунд автозапуска скрипта.
Вы научитесь убирать фоновый шум. Тот самый гул холодильника, который почему-то становится слышен именно тогда, когда вы говорите что-то важное. Тот шум улицы, который пробивается даже сквозь закрытые окна. Тот шипящий фон дешевого микрофона, который выдает в вас любителя за километр.
Вы сможете находить и удалять паузы. Не вручную, прокручивая ползунок туда-сюда и мучительно вылавливая взглядом провалы на звуковой дорожке. А одной командой. Все паузы длиннее полусекунды — бах, и сокращены до комфортного размера. Ваш подкаст становится плотнее, энергичнее, профессиональнее.
Вы освоите нормализацию громкости. Ваши видео на YouTube перестанут звучать тише, чем реклама перед ними. Ваш подкаст будет одинаково хорошо слышен и в метро, и в тихой комнате. Зрителям больше не придется дергать ползунок громкости туда-сюда — они будут просто слушать.
Вы сможете менять голос. Хотите озвучить персонажа с низким демоническим тембром? Сделать забавного робота для детского видео? Превратить свой голос в голос белки-летяги для комедийной вставки? Всё это будет делаться парой строк кода.
Вы соберете автоматический микс голоса и фоновой музыки. Чтобы музыка не забивала речь, а аккуратно поддерживала настроение. Чтобы голос всегда был на первом плане, а музыка уходила на второй, когда вы говорите, и возвращалась, когда вы замолкаете. Без ручной автоматизации. Без нервов.
Вы наложите финальный лоск — эквализацию и компрессию, которые превращают обычный голос в «радио-голос». Тот самый бархатный, глубокий, обволакивающий тембр, который заставляет людей дослушивать до конца и спрашивать: «А на чем ты записываешь?»
И самое главное: вы построите свою звуковую кухню. Набор скриптов, которые работают именно с вашим голосом, именно под ваши задачи. Не универсальные настройки из интернета, которые подходят «всем понемногу, но никому конкретно». А инструмент, заточенный под вас.
История автора: как я пришел к Python и звуку
Знаете, с чего начался мой путь в обработке звука? С позора. Самого настоящего, жгучего позора.
Я записал свой первый подкаст. Мне казалось, что это шедевр. Тема была огненная, мысли — глубокие, шутки — смешные. Я залил выпуск на площадку и лег спать с чувством выполненного долга. Мне снились восторженные комментарии и графики растущих прослушиваний.
Проснулся я от первого комментария. Он гласил: «Слушал в машине. Ничего не понял. Сделай погромче, а?»
Второй был хуже: «Звук как из ведра. Автор, ты в колодце сидишь?»
Третий добил: «Бросил на второй минуте. Уши устали продираться сквозь шум».
Я был раздавлен. Я вложил душу в содержание. Но слушателю было плевать на содержание, потому что форма не пускала его внутрь. Звук поставил стену между мной и аудиторией. И я ничего не мог с этим сделать.
Вернее, мог. Я открыл Audacity. И провел в нем четыре часа. Четыре часа я двигал ползунки, применял эффекты, отменял, применял другие, слушал результат, сравнивал, снова отменял. В итоге я получил звук немного лучше, но все еще далекий от идеала. А главное — я не понимал, что именно я сделал. Я не мог повторить этот результат для следующего выпуска. Каждый раз начиналась та же битва с ползунками.
Тогда я подумал: «Я же программист. Почему я занимаюсь ручным трудом, который можно автоматизировать?»
Я открыл Python. Установил librosa. И написал свой первый скрипт для очистки звука. Он работал отвратительно. Звук после обработки напоминал голос робота, говорящего из бочки с водой. Но я хотя бы понимал, что именно я сделал не так.
Через неделю экспериментов мой скрипт чистил звук лучше, чем я вручную в Audacity. Через месяц я мог обработать весь выпуск одной командой. Через три месяца друзья начали спрашивать: «Слушай, а что у тебя за микрофон? Звучит бомбически».
Микрофон был тот же самый, что и в первом позорном выпуске. Просто теперь между ним и слушателем стоял Python.
Эта книга — способ передать вам тот путь, который я прошел за месяцы, но в сжатом и понятном виде. Вы пройдете его за девять глав. И вам не придется набивать шишки, на которых набивал шишки я.
Ответы на страхи: «Я гуманитарий и боюсь кода»
Если вы прямо сейчас думаете: «Это все круто, но я гуманитарий. Я боюсь кода. Я не понимаю математику. Я не технарь. У меня не получится», — пожалуйста, прочитайте следующие четыре абзаца внимательно.
Первое. Код — это не магия, не математика и не инопланетный язык. Код — это инструкция, записанная в особой форме. Если вы можете объяснить другому человеку, как сделать бутерброд — пошагово, в правильной последовательности, с учетом всех деталей, — вы можете писать код. Потому что программирование — это просто умение раскладывать задачу на шаги.
Второе. В этой книге нет математики. Серьезно. Ни одной формулы, которую нужно было бы запомнить. Ни одного математического доказательства. Все, что делает Python под капотом, я объясняю через метафоры и аналогии. Фурье-преобразование? Я расскажу вам, что это как разложить смузи на отдельные фрукты, из которых он сделан. Спектральное вычитание? Это как убрать шум дождя из записи разговора, если у вас есть отдельная запись шума дождя. Без формул. Без интегралов. Без боли.



