Как вытащить слова из песни, если у вас есть только аудио

За этим вопросом прячутся три разные задачи, и распознавание решает только одну. Двум другим нужен поиск в интернете или чистый лист.


Начните с файла, а не с программы

Голосовая заметка на три минуты одиннадцать секунд. Записана в машине с заглушенным двигателем, гитара стоит слишком близко к микрофону, голос немного отстаёт от доли, а где-то во второй половине есть строчка, которой вы тогда гордились и которую теперь не разобрать.

Вам нужна эта строчка текстом. Желание понятное, только инструмент зависит от вопроса, который почти никто не задаёт первым: чьи это слова и существуют ли они вообще. Под одной фразой «вытащить текст из аудио» прячутся три совершенно разные задачи, и распознавание помогает только в одной из них.

Три задачи, которые снаружи выглядят одинаково

Первая: запись ваша, и нужен текст на бумаге

Вы это спели, слова лежат в файле, и теперь их надо перенести в документ, чтобы переписать второй куплет или распечатать лист тому, кто будет петь. Это работа расшифровщика, и здесь автоматическое распознавание действительно стоит запустить первым делом.

Вторая: песня чужая, и вы хотите подпевать

Снаружи похоже на первый случай, а по сути это поиск, а не расшифровка. Кто-то почти наверняка уже набрал эти слова, сверил их с оригиналом и поспорил в комментариях об одном слове из бриджа. Гонять распознавание по сведённому мастеру ради того, что давно лежит текстом, значит идти в обход по самой длинной дороге.

Одна трезвая фраза, и дальше без морали: разобрать чужую песню для себя, чтобы петь её правильно на кухне, дело ваше, а выпустить чужие слова под своим именем совсем другой поступок.

Третья: слов ещё нет

В файле мелодия и мычание поверх неё. «Ла-ла-ла, что-то-там, и потом про дверь». Распознавание честно вернёт вам расшифровку, потому что оно так устроено, и расшифровка будет бессмыслицей. Причём точной бессмыслицей: программа сообщает, что слов вы не спели. Ничего не сломалось, просто в файле нечего доставать.

Именно здесь люди теряют больше всего времени, потому что программа выдала результат, а результат похож на движение вперёд.

Что делаем мы, чтобы дальше вы читали без иллюзий

sunomarket не слушает аудио. Мы не расшифровываем, не разделяем дорожки и не производим звук: ни вокала, ни музыки, ни mp3 на выходе. Наш генератор текстов пишет слова. Вы даёте тему, выбираете из нескольких списков и получаете заголовок и готовый текст песни за 20 кредитов, то есть за $0.20 по курсу 100 кредитов за доллар. Чтобы эти слова прозвучали, их надо отнести в Suno или в другой сервис, который делает звук. Suno отдельная компания, мы с ним не связаны, не перепродаём его и не управляем его правилами.

Для третьего случая мы и есть ответ. В первых двух мы не тот инструмент, и следующие разделы как раз про те, что подходят.

Почему машина разбирает речь и спотыкается на пении

Распознавание речи выросло на подкастах, звонках и записях совещаний. Пение ломает почти все допущения, на которых держится эта точность, и ломает их одновременно.

Музыка живёт в том же диапазоне, что и голос. Разборчивость голоса собирается примерно там же, где играют малый барабан, акустическая гитара и середина фортепиано. Ваше ухо разделяет их, потому что знает, как устроен голос. Программа получает один поток, где всё это сложено в стопку, и согласная на конце слова приходит ровно в тот момент, когда бьёт хэт.

Гласные тянутся дольше, чем несут информацию. В речи слово занимает доли секунды, а в песне гласная может держаться несколько тактов, и всё это время в файле нет ни одной согласной, которая подсказала бы, что за слово поётся. Модели, натренированные на темпе речи, читают эту растяжку как лишние слоги, и строка из четырёх слов возвращается семью.

Согласные глотают намеренно. Певцы скругляют жёсткие окончания, потому что выплюнутое «т» звучит грубо поверх тянущегося аккорда. Каждая проглоченная согласная убирает улику ровно оттуда, куда распознавание смотрит в первую очередь.

Придыхание входит в манеру. То, из-за чего тихий куплет кажется близким и личным, физически представляет собой шум, положенный прямо на сигнал. Чем тише и ближе спет вокал, тем большая часть слова состоит из воздуха.

Вас часто больше одного. Дубль поверх основного голоса, стопка подголосков, припев, спетый трижды и наложенный слоями. Две версии одной фразы, разъехавшиеся на пару миллисекунд, не усредняются в фразу почётче, а смазываются в одну кашу.

Реверберация и задержка склеивают слова. Хвост предыдущего слова ещё звучит, когда начинается следующее. Обычно это ваше сознательное решение при сведении, и одновременно это именно та граница, которую распознаванию надо найти.

Часть слов словами не является. Имена, выдуманное написание, «ой» и «м» в роли ритма, а не смысла, улица из вашего города, сленг, появившийся в прошлом году. Всё, чего нет в словаре, будет уверенно заменено на ближайшее, что в словаре есть.

Модель ждёт грамматики, а песня её не даёт. Выбирая между похоже звучащими вариантами, распознавание опирается на языковую модель, а та выросла на предложениях, которые ведут себя прилично. Песня переставляет слова, роняет подлежащее, повторяет обрывок четыре раза и заканчивает строку предлогом. Тот самый механизм, который делает расшифровку речи точной, тянет пение в сторону правдоподобной прозы и прочь от того, что вы спели.

Эти помехи складываются. Придыхательный вокал с дублем и реверберацией, поющий выдуманное имя поверх плотной аранжировки, проваливается сразу по пяти пунктам, и это не поломка программы, а попытка поручить ей другую работу.

Что сделать со своей записью, чтобы шансы выросли

Этот раздел работает только в первом случае, потому что нужен доступ к материалу. Шаги идут от самого полезного к наименее полезному.

1. Берите вокальную дорожку, а не сведение. Если проект сессии ещё жив, сведите один ведущий вокал: сухой, с отключённой реверберацией и задержкой, без тяжёлой компрессии. Один этот шаг даёт больше, чем пять остальных вместе, потому что разом убирает две главные помехи. Оставьте тот дубль, который реально пошёл в песню, а остальные заглушите.

2. Сессии не осталось? Разделите дорожки. Инструменты для выделения вокала вытаскивают голос из готового сведения отдельным файлом. Результат идёт с артефактами, вокруг слов слышен водянистый звон, и всё равно распознавать его гораздо легче, чем полный микс. Подвох стоит знать заранее: разделение работает лучше всего там, где вокал громкий и стоит по центру, и хуже всего ровно на том материале, ради которого вы за него взялись, то есть на тихом голосе внутри плотной аранжировки.

3. Режьте файл на куски. Распознавание уплывает: четырёхминутный файл в один проход держится точнее в начале, а ближе к концу начинает сочинять. Подавайте по куплету отдельными короткими файлами, и вдобавок получите расшифровку, уже разложенную по частям песни.

4. Замедлите. Вполовину, и без изменения высоты тона, если такая настройка есть. Быстрые слоговые куски, рэп-куплет или скороговорка в бридже, выигрывают от этого заметно сильнее медленной баллады. На балладе замедление иногда вредит, потому что и без того длинная гласная растягивается вдвое и даёт распознаванию ещё больше пустой полосы, на которой можно навыдумывать слогов.

5. Дубли и подголоски прогоняйте отдельно. Если припев собран из трёх наложенных дублей, расшифруйте один из них в одиночку. Слова там одинаковые, а вам нужно одно чистое прочтение, а не среднее из трёх.

6. Прогоните дважды и сравните. Два прохода или два разных инструмента по одному куску. Там, где они совпали, шансы хорошие, а где разошлись, у вас на руках короткий список строк, которые придётся слушать ушами.

Отдача падает быстро. Первые два шага меняют результат, а шестой в основном показывает, куда смотреть.

Править по рифме и размеру, а не по смыслу

Вот где ловушка. Ошибки распознавания устроены так, чтобы выглядеть правдоподобно. Оно выдаёт не набор букв, а грамматичное предложение из похоже звучащих слов, поэтому чтение расшифровки на смысл ошибку не поймает: смысл и есть то, подо что машина подгоняла ответ.

С рифмой и числом слогов иначе, потому что их можно пересчитать, и сохранять их машина не пыталась.

Допустим, в первом куплете четвёртая строка выглядит так:

меня никто не научил молчать

Десять слогов: ме-ня-ни-кто-не-на-у-чил-мол-чать. Окончание на ударное «ать».

Во втором куплете распознавание отдаёт вам вот это:

и мне не разрешали здесь кричать уже

Прочитайте на смысл, и придраться не к чему: предложение живое, по теме, вы кивнёте. Пересчитайте, и оно рассыпается. Двенадцать слогов вместо десяти, а кончается строка на «уже», которое ни с чем не перекликается.

Настоящая строка была короче:

и мне не разрешали здесь кричать

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

Отсюда порядок работы. Положите расшифровку рядом с записью и проверяйте каждую строку по трём пунктам подряд: число слогов против той же строки в соседнем куплете, последняя ударная гласная против того, с чем строка обязана перекликаться, и только потом смысл. Если непонятно, какая строка кому отвечает, разбор рифмовки объясняет схемы. А если вы расшифровываете чужую песню, чтобы понять, как она собрана, разбор песни по косточкам даст больше, чем голый текст, потому что подскажет, на что смотреть, когда слова уже есть.

Ещё две привычки. Сомнительное слово ставьте в скобки, а не угадывайте, иначе уверенная ошибка через полгода будет сидеть в файле и выдавать себя за правду. И один раз прочитайте расшифровку вслух в темп записи: так вылезает то, чего глазами не видно никогда.

Где метод упирается в потолок

У всего написанного выше есть предел, и его честнее назвать.

Крик, гроул, сильно перегруженный вокал. То, за что цепляется распознавание, пропадает ещё до того, как сигнал до него доходит. Ждать многого не стоит, что бы вы с файлом ни делали.

Тяжёлая подстройка высоты, вокодер, сдвиг формант, сложенные октавы. Обработка, которая превращает голос в инструмент, превращает его в инструмент и для программы.

Два языка внутри одной строки. Распознавание выбирает язык и держится за него, поэтому строка, которая переключается на середине, вернётся наполовину неверной. Если куски на разных языках идут отдельно, прогоняйте их отдельными проходами, а строку с переключением внутри придётся набрать руками. Про сочинительскую сторону вопроса написано в статье как писать песни на другом языке.

Запись на телефон с ветром, гулкой комнатой или стуком по столу. Ничто дальше по цепочке не чинит сигнал, которого не записали.

Имена собственные, выдуманные слова и припев, который задуман как звук, а не как фраза. Эти места будут неверными всегда. Наберите их сами и идите дальше.

Во всех этих случаях разумнее согласиться на частичную расшифровку. Возьмите у машины ту долю, которую она вытягивает, а трудные строки снимите на слух на половинной скорости. Десять трудных строк отнимут минут двадцать, и час борьбы с программой ради экономии этих двадцати минут обменом не назовёшь.

Третий случай подробно: расшифровывать нечего

Возвращаемся к напевке, потому что ответ здесь другой по сути.

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

Честная версия того, что в этой ситуации делает наш инструмент. Генератор текстов берёт одно свободное поле темы, не длиннее 300 символов, это примерно три предложения. Всё остальное выбирается из списков: точка зрения, пять вариантов. Язык песни, девять. Возраст аудитории, шестнадцать групп. Структура, шесть шаблонов. Куда толкает хук, пять направлений. Вокал, три варианта, и дуэта среди них нет, так что перекличку двух голосов вы разложите сами. Музыкальный стиль, 53 курируемых корневых стиля. Эмоция, от одной до трёх из двенадцати. На выходе заголовок и текст песни длиной до 20 000 символов за 20 кредитов, то есть за $0.20. Актуальные цифры лежат на странице тарифов.

Чего генератор не берёт, так это ваше аудио. Он не слышит мелодию, не знает, что вторая строка у вас на семь слогов, и сам под вашу фразировку не подстроится. Поэтому в работе остаётся ручной шаг, и делать вид, что его нет, было бы враньём.

Рабочий порядок действий для напетого черновика:

  1. До всякой генерации запишите то, что ваш черновик уже решил: сколько слогов в строке по каждой части, где падают рифмы, какая строка работает хуком. Считается это по собственному мычанию, занимает пять минут, и именно этот шаг обычно пропускают.
  2. Потратьте 300 символов на конкретное, а не на категорию. брат съехал в 19, звонит по воскресеньям, говорим ни о чём, а сказать хочу совсем другое бьёт песня о семье с большим отрывом, и обе формулировки влезают в лимит.
  3. Берите шаблон структуры под ту форму, которая уже есть в черновике, а не под ту, что нравится на бумаге. Мелодия своё слово сказала раньше.
  4. Запускайте. При цене $0.20 за прогон второй и третий заход с другим набором эмоций или другим направлением хука обойдутся в сорок центов, а сравнение трёх черновиков объясняет, чего хочет ваша песня, быстрее, чем разглядывание одного.
  5. Дальше подгонка руками. Пойте полученные строки под свой черновик и режьте или добавляйте слоги, пока они не сядут. Мелодия выигрывает любой спор: строка, которая красиво читается и не ложится на мотив, неправильная.
  6. Когда слова устоялись, дорога от текста до звучащей песни описана отдельно в статье как превратить текст в песню.

Работа сидит в пятом пункте. Сгенерированный текст выдаёт образы и обороты по теме, а подгонка под живую мелодию остаётся за вами. То же самое происходит с текстом, который принёс соавтор, так что это не претензия к генерации, а устройство самой работы.

Частые вопросы

Можно ли вашим генератором вытащить текст из песни? Нет. Он не принимает аудио и не слушает его. Он пишет новые слова по теме и набору настроек за $0.20. Если в записи слова уже спеты, нужен расшифровщик, и середина этой статьи как раз про то, как выжать из него максимум.

Есть ли инструмент, который делает это идеально? Для пения поверх музыки нет. Один сухой вокал, спетый с чёткой дикцией на распространённом языке, расшифровывается хорошо, а придыхательный дубль внутри плотного микса нет. Оценивайте любой инструмент по самому трудному своему файлу, а не по самому лёгкому.

Расшифровка грамматически безупречна и при этом полностью неверна. Почему? Потому что так и выглядит типичный промах, а не случайный сбой. Неоднозначность разрешается выбором самого вероятного варианта с точки зрения языка, поэтому ошибки выходят гладкими. Проверяйте по числу слогов и по рифме, их машина не берегла.

В черновике нет слов. В какое поле вставить мелодию? Такого поля нет. Генератор пишет по теме и вашим настройкам, а совмещение результата с мелодией остаётся ручным проходом. Запишите свои слоговые счёты заранее, тогда подгонка займёт минуты, а не вечер. Если хочется, чтобы строки сразу выходили певучими, как писать тексты песен разбирает ровно это ремесло.

Двое поют по очереди, генератор так умеет? Настройкой нет. Вариантов вокала три, дуэта среди них не предусмотрено. Сгенерируйте текст на один голос и разложите строки по двум партиям сами.

А если песня на языке, который распознавание тянет плохо? Тогда оно угадает на ближайшем соседнем языке и результат окажется непригодным. Снимайте на слух. Если же вы пишете, а не расшифровываете, ставьте нужный язык песни прямо в генераторе, вместо того чтобы писать на одном языке и потом переводить: у перевода размер почти всегда рассыпается.

Читать дальше