Шаг 0. Готовим к работе тетрадку в Google Colab
Чтобы превратить аудио в текст с помощью Whisper, мы напишем немного кода на Python, потому что своего официального интерфейса у модели нет (хотя и есть какое-то количество сторонних интерфейсов). Мы сделаем это в среде Google Colab, которая позволяет писать и выполнять код Python в браузере, используя при этом вычислительные мощности Google. Для запуска кода не потребуется ничего устанавливать.
Чтобы показать на практике, как всё работает, мы сделали тетрадку с кодом. Она принадлежит нам, поэтому сторонние изменения в ней не сохранятся. Если вы хотите повторить, то рекомендуем скопировать эту тетрадку на свой Диск и работать в созданной копии, чтобы не потерять свои результаты.
После того, как вы завели блокнот, нужно подготовить Google Colab к долгой работе. Распознавание речи — времязатратный процесс, поэтому нам понадобится настроить блокнот так, чтобы он не «засыпал» — а точнее, немножко обмануть его, создав видимость активной работы.
Чтобы это сделать, нужно нажать клавиши ctrl + shift + i. Когда появится панель разработчика, выбираем вкладку Консоль (Console).
Консоль в панели разработчика
Теперь в консоль нужно вставить такой код и нажать Enter:
function ClickConnect(){ console.log("Working"); document.querySelector("colab-toolbar-button").click() }setInterval(ClickConnect,60000)
Готово!
Google Colab будет автоматически создавать пустые ячейки, не давая себе выключиться. После завершения работы их можно будет удалить.
Обратите внимание, что, пока идёт процесс, лучше не закрывать вкладку, где выполняется код, отсоединяться от Интернета или включать VPN, а также перезагружать или выключать компьютер. Это может привести к сбою программы и её, к сожалению, придётся перезапускать.
Шаг 1. Загружаем аудио
Аудио для расшифровки можно загрузить в Google Colab тремя способами. Первый — самый простой, но вместе с тем самый долгий, второй — быстрее, но сложнее, а третий, как логично предположить, самый быстрый и самый сложный.
Итак, первый вариант — выбор файла с компьютера при помощи готовой функции из библиотеки files. Вставляем этот код:
from google.colab import files uploaded = files.upload() filename = list(uploaded.keys())[0]
Потом запускаем ячейку, нажав треугольник в левом верхнем углу. Файл добавлен.
Второй способ — загрузить файл сразу в Google Colab.
На вертикальной панели слева есть иконка в виде папки. Если нажать на неё, появятся четыре новых значка. Нужно выбрать изображение папки со стрелкой, и появится возможность загрузить файл с компьютера.
Загрузка файла в Google Colab
Если возникает предупреждение о том, что Google Colab рекомендует сохранять файлы не только в среде выполнения, смело нажимаем ОК и продолжаем работу. Выгруженный файл появится в списке в той же панели слева, а прогресс загрузки можно будет наблюдать в нижней части окна.
Дальше нужно запустить ячейку с кодом ниже и ввести в появившееся поле имя файла с расширением. Например, Interview.m4a.
filename = '/content/' + input('Введите имя сюда:\n')
Третий способ ― самый сложный, но самый быстрый.
Сначала файл для расшифровки нужно загрузить на Google Диск того же аккаунта, где был сохранён блокнот. Файл нужно разместить прямо в корне — иными словами, не внутри папок, а на самом Диске.
Если аудиофайл находится в другом аккаунте, можно создать ярлык. Для этого нужно найти файл на чужом Диске, кликнуть на него правой кнопкой мыши и нажать Добавить ярлык на Диск.
Теперь нужно дать Google Colab доступ к Диску. Для этого запустите код, написанный ниже, и на все вопросы Колаба выбирайте команду Разрешить.
from google.colab import drive drive.mount('/content/drive')
После выполнения кода в панели слева появится папка Drive. Это означает, что Диск загрузился в Colab. Дальше почти так же, как и во втором способе, нужно запустить ячейку с новым кодом и ввести имя файла с расширением (например, Interview.m4a).
filename = '/content/drive/MyDrive/' + input('Введите имя сюда:\n')
Шаг 2. Делаем из аудио текст
Когда файл загружен, можно запустить программу, которая установит Whisper, применит его и запишет результат расшифровки в txt-файл. Он автоматически скачается, когда программа закончит работу. Имя файла будет совпадать с исходным: например, если файл с аудио назывался audio.mp3, то txt получит обозначение audio.mp3.txt.
!pip install git+https://github.com/openai/whisper.git import whisper !whisper $filename --language ru --output_format txt from google.colab import files files.download(filename +'.txt')
Приготовьтесь к тому, что расшифровка будет длиться долго. Ход работы программы отображается под ячейкой с кодом: промежуточные результаты будут выводиться на экран.
Готово! Теперь осталось открыть текстовый файл и поправить то, с чем машина не справилась.
Шаг 3. Метод Кондо: чистим текст
Как выглядит результат работы Whisper? Рассмотрим его на примере расшифровки интервью СБъ с Борисом Ореховым.
Текст после обработки Whisper
Текст требует дополнительного редактирования. Во-первых, реплики собеседников придётся разделять вручную, так как Whisper их не различает. Если включить аудио, станет понятно, что первая реплика — вопрос — на самом деле принадлежит интервьюеру Руслану Родионову, а ответ Бориса Орехова начинается только со второй фразы.
Во-вторых, кое-что придётся переписать, потому что некоторые слова Whisper распознаёт неправильно («миросети» вместо «нейросети», «Четел» вместо «Дело», «Лечь» вместо «Речь» и т. д.). Когда он вставляет в текст несуществующие слова, их легко обнаружит любой текстовые редактор. Но иногда Whisper не справляется с омофонами или разбивает слова с приставками на предлог и существительное. Такие неточности можно заметить только глазами.
В-третьих, внимания потребуют знаки препинания. Whisper расставляет их неплохо, но иногда своеобразно. Например, придётся разделить длинную фразу на пару предложений покороче или добавить тире.
Наконец, модель часто не распознаёт названия. В рассматриваемом нами отрывке встретилось название «Системный Блокъ»: оно написано без кавычек, строчными буквами, и, хотя это уже и next level, без «ъ» в конце. Одним словом, будьте готовы к тому, что имена собственные нужно править вручную.
Тем не менее, всё это займёт гораздо меньше времени, чем расшифровка с нуля. В итоге у нас получается отлично оформленный текст:
Текст интервью после редактирования
Заключение
Whisper — вполне удобный, эффективный инструмент для расшифровки аудио. Поскольку он работает на основе нейросети, можно ожидать, что с каждой новой версией способность программы распознавать речь будет совершенствоваться. Узнать о новых версиях Whisper, а также почитать подробнее о текущей можно на сайте OpenAI.
Источники
- Introducing Whisper [Электронный ресурс] // OpenAI. 21.09.2022. URL: https://openai.com/research/whisper (дата обращения 28.12.2023).
- Robust Speech Recognition via Large-Scale Weak Supervision [Электронный ресурс] // Github. 2023. URL: https://github.com/openai/whisper/commits/main (дата обращения 28.12.2023).