Здесь вы узнаете, как провести цензуру аудиофайлов в автономном режиме с помощью Python без использования каких-либо API-интерфейсов распознавания речи в облаке.

Во-первых, мы должны предоставить аудиофайл для цензуры. Затем мы выполняем автономное распознавание речи на аудио с помощью API Vosk. Таким образом, мы получим список слов с соответствующими временными метками. Теперь пользователь будет вводить слова для цензуры. Соответствующие временные метки этих слов обнаруживаются из списка, только что подготовленного с помощью vosk, а затем на эти экземпляры накладывается цензурный звук, предоставленный пользователем.

Аудиофайлы могут подвергаться автоматической цензуре с помощью функции censor_audio моего модуля PyAudioCensor. Процесс будет полностью оффлайн.

def censor_audio (base_audio_path, censor_audio_path, output_audio_path, model_path, to_censor, gain_of_censor = 0, gain_of_base = -40, молчание = 1):

Описание параметров функции:

  1. Base_Audio_Path:путь к базовому аудио для цензуры.
  2. Censor_Audio_Path: путь к аудио, которое будет использоваться для цензуры.
  3. Output_Audio_Path: место, где будет храниться подвергнутый цензуре звук.
  4. Model_path: путь к модели Vosk https://alphacephei.com/vosk/models

Vosk API — это набор инструментов для распознавания речи, разработанный Alpha Cephei Inc., основанный на наборе инструментов Kaldi. Kaldi — это бесплатный набор инструментов с открытым исходным кодом для распознавания речи, разработанный группой обработки речи и языка Университета Джона Хопкинса. Он использует современные методы машинного обучения, в том числе глубокие нейронные сети, для достижения высокой точности и эффективности.

Часть распознавание речи в автономном режиме с временными метками выполняется с помощью работы Дмитрия Николаева, упомянутой ниже:

https://gitlab.com/Winston-90/foreign_speech_recognition/-/tree/main/timestamps

5. To_censor: список слов, подлежащих цензуре.

6. Gain_of_Base : усиление базового звука.

7. Gain_of_Overlay: усиление звука цензуры.

8. Без звука : сделать базовый звук тихим, накладывая звук цензуры.

Пример реализации:

Я буду демонстрировать работу этого пакета на песне «Happier» Marshmello. Я подвергаю цензуре слова «счастливее», «утро», «история» и «разум».

из основного импорта PyAudioCensor

main.censor_audio («base_audio.wav», «overlay_audio.wav», «censored.wav», model_path = «PyCensorAudio\model», to_censor = [«счастливее», «утро», «история», «разум»], молчать=1)

Ниже показано, как выводится распознавание речи вместе с отметками времени, предоставленными Воском. Показаны первые несколько слов. Полный список выходных данных приведен в моем Github.

они от 0,33 сек до 0,62 сек, достоверность 63,98%

они от 0,62 сек до 1,23 сек, достоверность 100,00%

составляют от 1,26 до 1,59 с, достоверность 100,00 %.

от 1,59 сек до 2,13 сек, достоверность 100,00%

печь с 2,16 сек до 2,76 сек, достоверность 30,85%

вещь от 2,76 сек до 3,60 сек, достоверность 100,00%

я от 3,63 сек до 3,96 сек, достоверность 100,00%

хотите от 3,96 сек до 4,32 сек, достоверность 100,00%

вы с 4,32 сек до 4,53 сек, достоверность 100,00%

до от 4,53 сек до 4,83 сек, достоверность 100,00%

быть от 4,86 ​​сек до 5,13 сек, достоверность 100,00%

счастливее с 5,13 сек до 5,97 сек, достоверность 84,00%

i от 6,03 сек до 6,33 сек, достоверность 100,00%

хотите от 6,33 сек до 6,72 сек, достоверность 100,00%

вы с 6,72 сек до 6,90 сек, достоверность 100,00%

до от 6,90 сек до 7,20 сек, достоверность 100,00%

быть от 7,20 сек до 7,53 сек, достоверность 100,00%

счастливее с 7,53 сек до 8,94 сек, достоверность 100,00%

когда от 8,97 сек до 9,21 сек достоверность составляет 100,00%

от 9,21 сек до 9,30 сек, достоверность 100,00%

утро с 9.30 сек до 9.90 сек, достоверность 100.00%

происходит от 9,90 сек до 10,83 сек, достоверность 100,00%

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

['они', 0,33]

['они', 0,621496]

['есть', 1.26]

['то', 1.59]

['печь', 2.16]

['вещь', 2.76]

[‘i’, 3.63]

['хочу', 3.96]

['ты', 4.32]

[‘to’, 4.53]

[‘be’, 4.86]

['счастливее', 5.13]

[‘i’, 6.03]

['хочу', 6.33]

['ты', 6.72]

[‘to’, 6.9]

[‘be’, 7.2]

['счастливее', 7.53]

['когда', 8.97]

['то', 9.21]

['утро', 9.3]

['приходит', 9.9]

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

time_list = timestamp_list (base_audio_path, model_path)

защита find_time_occurrences (to_censor):

результат = []

для слова в to_censor:

для элемента в time_list:

если элемент [0] == слово:

результат.добавление(элемент[1]*1000)

вернуть результат

censor_time = find_time_occurrences (to_censor)

position=censor_time

для значения в censor_time:

печать (значение)

В данном случае мы подвергаем цензуре слова

[«Счастливее», «Утро», «История», «Разум»].

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

5130.0

7530.0

9300.0

33944.718

Теперь звук цензуры будет накладываться на эти конкретные временные метки (в мс) с помощью функции censor_audio.

Вот ссылки на все три аудиофайла и полный пакет, включая модель:

Базовое аудио

https://drive.google.com/file/d/1A_V6ycI4DMyGEyzNZmv60ZxUZObwIUiL/view?usp=sharing

Наложение аудио

https://drive.google.com/file/d/1blOtMAF08ZCaXR0dIJiqWXnVMl_yipFm/view?usp=share_link

Зацензуренное аудио

https://drive.google.com/file/d/1JK9dBF96_Vqx6-LHC6fdkbeyUCqhJnv9/view?usp=sharing

Пакет PyAudioCensor:

https://drive.google.com/drive/folders/1JXyV5dfNGy_3aUsMrsdOoEzWWJ9vOqTn

Ссылка на полный код:

https://github.com/Смартмаюх/PyAudioCensor