{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}
Генерация аудио Audiocraft
AudioCraft: преобразование текста в музыку MusicGen, преобразование текста в звук AudioGen.
Метаданные навыки
Источник
Встроенный (устанавливается по умолчанию)
Путь
навыки/млопсы/модели/аудиоремесло
Версия
1.0.0
Автор
Исследование оркестра
Лицензия
Массачусетский технологический институт
Зависимости
аудиокрафт, факел>=2.0.0, трансформеры>=4.30.0
Платформы
Linux, MacOS
Теги
«Мультимодальный», «Генерация аудио», «Преобразование текста в музыку», «Преобразование текста в аудио», «MusicGen»
Справочник: полный SKILL.md:::информация
Ниже приведено полное описание навыков, которые Hermes загружает при его активации. Агент увидит эту инструкцию, когда навыки активны.
AudioCraft: Генерация аудио
Исчерпывающее руководство по использованию AudioCraft от Meta для генерации музыки и аудио из текста с помощью MusicGen, AudioGen и EnCodec.
Когда использовать AudioCraft
Используйте AudioCraft когда:
- Нужно включить музыку по текстовым описаниям
- Создавать звуковые эффекты и окружающий аудиофон.
- Создать приложения для генерации музыки
- Нужна генерация музыки с условиями по мелодии
- Требуется стереоаудио на выходе
- Нужна управляемая генерация музыки с переносом стиля.
Ключевые возможности:
- MusicGen: генерация музыки из текста с условиями по мелодии.
- AudioGen: генерация звуковых эффектов из текста.
- EnCodec: высококачественный нейронный аудиокодек
- Несколько размеров моделей: от маленького (300M) до большого (3,3B).
- Поддержка стерео: полноценная генерация стерео-аудио
- Условие по стилю: MusicGen-Style для генерации на основе референса
Вместо этого викор альтернативы:
- Стабильный звук: для более длительной коммерческой генерации музыки.
- Bark: для синтеза речи с музыкой/звуковыми эффектами.
- Riffusion: для генерации музыки на основе спектрограммы
- OpenAI Jukebox: для генерации сырого аудио с текстами песен.
Быстрый старт
Установка
# Из PyPI
pipinstallaudiocraft
# Из GitHub (последняя версия)
pipinstallgit+https://github.com/facebookresearch/audiocraft.git
# Или используйте HuggingFace Transformers
pipinstalltransformerstorchtorchaudio
Базовая генерация музыки из текста (AudioCraft)
importtorchaudiofromaudiocraft.modelsimportMusicGen# Загрузка моделиmodel=MusicGen.get_pretrained('facebook/musicgen-small')# Установка параметров генерацииmodel.set_generation_params(duration=8,# секундыtop_k=250,temperature=1.0)# Генерация из текстаdescriptions=["happy upbeat electronic dance music with synths"]wav=model.generate(descriptions)# Сохранение аудиоtorchaudio.save("output.wav",wav[0].cpu(),sample_rate=32000)
Использование HuggingFace Transformers
fromtransformersimportAutoProcessor,MusicgenForConditionalGenerationimportscipy# Загрузка модели и процессораprocessor=AutoProcessor.from_pretrained("facebook/musicgen-small")model=MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")model.to("cuda")# Генерация музыкиinputs=processor(text=["80s pop track with bassy drums and synth"],padding=True,return_tensors="pt").to("cuda")audio_values=model.generate(**inputs,do_sample=True,guidance_scale=3,max_new_tokens=256)# Сохранениеsampling_rate=model.config.audio_encoder.sampling_ratescipy.io.wavfile.write("output.wav",rate=sampling_rate,data=audio_values[0,0].cpu().numpy())
Генерация звука с AudioGen
fromaudiocraft.modelsimportAudioGen# Загрузка AudioGenmodel=AudioGen.get_pretrained('facebook/audiogen-medium')model.set_generation_params(duration=5)# Генерация звуковых эффектовdescriptions=["dog barking in a park with birds chirping"]wav=model.generate(descriptions)torchaudio.save("sound.wav",wav[0].cpu(),sample_rate=16000)
fromaudiocraft.modelsimportMusicGenimporttorchaudiomodel=MusicGen.get_pretrained('facebook/musicgen-medium')# Настройка генерацииmodel.set_generation_params(duration=30,# До 30 секундtop_k=250,# Разнообразие сэмплированияtop_p=0.0,# 0 = использовать только top_ktemperature=1.0,# Креативность (выше = разнообразнее)cfg_coef=3.0# Приверженность тексту (выше = строже))# Генерация нескольких образцовdescriptions=["epic orchestral soundtrack with strings and brass","chill lo-fi hip hop beat with jazzy piano","energetic rock song with electric guitar"]# Генерация (возвращает [batch, channels, samples])wav=model.generate(descriptions)# Сохранение каждогоfori,audioinenumerate(wav):torchaudio.save(f"music_{i}.wav",audio.cpu(),sample_rate=32000)
Генерация с условием по мелодии
fromaudiocraft.modelsimportMusicGenimporttorchaudio# Загрузка модели для мелодииmodel=MusicGen.get_pretrained('facebook/musicgen-melody')model.set_generation_params(duration=30)# Загрузка аудио с мелодиейmelody,sr=torchaudio.load("melody.wav")# Генерация с условием по мелодииdescriptions=["acoustic guitar folk song"]wav=model.generate_with_chroma(descriptions,melody,sr)torchaudio.save("melody_conditioned.wav",wav[0].cpu(),sample_rate=32000)
Стереогенерация
fromaudiocraft.modelsimportMusicGen# Загрузка стереомоделиmodel=MusicGen.get_pretrained('facebook/musicgen-stereo-medium')model.set_generation_params(duration=15)descriptions=["ambient electronic music with wide stereo panning"]wav=model.generate(descriptions)# Форма wav: [batch, 2, samples] для стереоprint(f"Стереоформа: {wav.shape}")# [1, 2, 480000]torchaudio.save("stereo.wav",wav[0].cpu(),sample_rate=32000)
Продолжение аудио
fromtransformersimportAutoProcessor,MusicgenForConditionalGenerationprocessor=AutoProcessor.from_pretrained("facebook/musicgen-medium")model=MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-medium")# Загрузка аудио для продолженияimporttorchaudioaudio,sr=torchaudio.load("intro.wav")# Обработка с текстом и аудиоinputs=processor(audio=audio.squeeze().numpy(),sampling_rate=sr,text=["continue with a epic chorus"],padding=True,return_tensors="pt")# Генерация продолженияaudio_values=model.generate(**inputs,do_sample=True,guidance_scale=3,max_new_tokens=512)
Использование MusicGen-Style
Генерация с условием по стилю
fromaudiocraft.modelsimportMusicGen# Загрузка модели стиляmodel=MusicGen.get_pretrained('facebook/musicgen-style')# Настройка генерации со стилемmodel.set_generation_params(duration=30,cfg_coef=3.0,cfg_coef_beta=5.0# Влияние стиля)# Настройка кондиционера стиляmodel.set_style_conditioner_params(eval_q=3,# RVQ квантователи (1-6)excerpt_length=3.0# Длина фрагмента стиля)# Загрузка референса стиляstyle_audio,sr=torchaudio.load("reference_style.wav")# Генерация с текстом + стилемdescriptions=["upbeat dance track"]wav=model.generate_with_style(descriptions,style_audio,sr)
Генерация только по стилю (без текста)
# Генерация соответствующего стиля без текстового запросаmodel.set_generation_params(duration=30,cfg_coef=3.0,cfg_coef_beta=None# Отключить двойной CFG для только стиля)wav=model.generate_with_style([None],style_audio,sr)
Использование AudioGen
Генерация звуковых эффектов
fromaudiocraft.modelsimportAudioGenimporttorchaudiomodel=AudioGen.get_pretrained('facebook/audiogen-medium')model.set_generation_params(duration=10)# Генерация различных звуковdescriptions=["thunderstorm with heavy rain and lightning","busy city traffic with car horns","ocean waves crashing on rocks","crackling campfire in forest"]wav=model.generate(descriptions)fori,audioinenumerate(wav):torchaudio.save(f"sound_{i}.wav",audio.cpu(),sample_rate=16000)
Использование EnCodec
Сжатие аудио
fromaudiocraft.modelsimportCompressionModelimporttorchimporttorchaudio# Загрузка EnCodecmodel=CompressionModel.get_pretrained('facebook/encodec_32khz')# Загрузка аудиоwav,sr=torchaudio.load("audio.wav")# Проверка правильной частоты дискретизацииifsr!=32000:resampler=torchaudio.transforms.Resample(sr,32000)wav=resampler(wav)# Кодирование в токеныwithtorch.no_grad():encoded=model.encode(wav.unsqueeze(0))codes=encoded[0]# Аудиокоды# Декодирование обратно в аудиоwithtorch.no_grad():decoded=model.decode(codes)torchaudio.save("reconstructed.wav",decoded[0].cpu(),sample_rate=32000)
Рабочий процесс 2: Пакетная обработка звукового дизайна
importjsonfrompathlibimportPathfromaudiocraft.modelsimportAudioGenimporttorchaudiodefbatch_generate_sounds(sound_specs,output_dir):""" Генерирует несколько звуков по спецификациям. Args: sound_specs: список {"name": str, "description": str, "duration": float} output_dir: путь к выходной директории """model=AudioGen.get_pretrained('facebook/audiogen-medium')output_dir=Path(output_dir)output_dir.mkdir(exist_ok=True)results=[]forspecinsound_specs:model.set_generation_params(duration=spec.get("duration",5))wav=model.generate([spec["description"]])output_path=output_dir/f"{spec['name']}.wav"torchaudio.save(str(output_path),wav[0].cpu(),sample_rate=16000)results.append({"name":spec["name"],"path":str(output_path),"description":spec["description"]})returnresults# Использованиеsounds=[{"name":"explosion","description":"massive explosion with debris","duration":3},{"name":"footsteps","description":"footsteps on wooden floor","duration":5},{"name":"door","description":"wooden door creaking and closing","duration":2}]results=batch_generate_sounds(sounds,"sound_effects/")
# Используйте меньшую модельmodel=MusicGen.get_pretrained('facebook/musicgen-small')# Очищайте кэш между генерациямиtorch.cuda.empty_cache()# Генерируйте более короткие длительностиmodel.set_generation_params(duration=10)# Вместо 30# Используйте половинную точностьmodel=model.half()
Эффективность пакетной обработки
# Обрабатывайте несколько запросов одновременно (эффективнее)descriptions=["prompt1","prompt2","prompt3","prompt4"]wav=model.generate(descriptions)# Один батч# Вместоfordescindescriptions:wav=model.generate([desc])# Множество батчей (медленнее)