首页 > 编程问答 >python - 从文本生成音乐

python - 从文本生成音乐

时间:2024-07-30 12:48:33浏览次数:6  
标签:python generate

请给我一些建议

为了解释一下,我输入“深度睡眠的睡眠音乐”,它将返回一个 wav 文件: https://www.youtube.com/watch?v=1wAdQhFJy54 或者我给出一个 wav 文件,它会返回相同的

现在这是我尝试过的:

  • https://github.com/facebookresearch/audiocraft 但它的质量很低

      import torchaudio
      from audiocraft.models import MusicGen
    
      au_crmode = MusicGen.get_pretrained(pre, cache_dir=pret_loca)
      au_crmode.set_generation_params(duration=kwargs['thoigian'])
    
      melody, sr = torchaudio.load('./176_183.wav')
      # generates using the melody from the given audio and the provided descriptions.
      wav = au_crmode.generate_with_chroma(input_text, melody[None].expand(3, -1, -1), sr)
    
      for idx, one_wav in enumerate(wav):
           audio_write(f'{idx}', one_wav.cpu(), au_crmode.sample_rate, strategy="loudness")
    

processor = AutoProcessor.from_pretrained(pretra[0], cache_dir=pret_loca)
model = MusicgenForConditionalGeneration.from_pretrained(pretra[0], cache_dir=pret_loca)

sample_length = 30
num_tokens = sample_length * model.config.audio_encoder.frame_rate + 3
inputs = processor(
    text=input_text,
    padding=True,
    return_tensors="pt",
).to(device)
audio_values = model.generate(
    **inputs,
    max_new_tokens=num_tokens,  # defines the length of the generated music piece
    guidance_scale=g_scale,  # controls the creativity level  # The guidance_scale is used in classifier free guidance...Higher guidance scale encourages the model to generate samples that are more closely linked to the input prompt
    do_sample=True,  # enables stochastic sampling, making the generation process more creative  # sampling leads to significantly better results than greedy (do_sample=False)
)

KeyError: 'hubert_pretraining'

with HuBERT Base or

'NoneType' 对象没有属性 'task'

with HuBERT Large

任何理想


将文本转换为音乐是一个复杂的任务,虽然 Audiocraft 等现有模型显示出了希望,但生成高质量且多样化的音乐仍然是一个挑战。让我们探索一些改进结果的想法以及解决遇到的特定问题的建议:

提高音乐生成质量的技巧

  1. 微调预训练模型: 不要从头开始训练,而是使用更大的音乐数据集微调 Audiocraft 等预训练模型。这可以提高生成音乐的质量和与期望风格的一致性。

  2. 实验生成参数: Audiocraft 和 MusicGen 提供了诸如 guidance_scale duration 之类的参数。尝试不同的值可以显著影响结果。更高的 guidance_scale 值可以提高与输入文本的一致性,而较低的值则可以提供更多样化的输出。

  3. 分层方法: 考虑将文本到音乐的生成分解为更小的、更易于管理的任务。例如,首先生成 MIDI 表示的旋律或和声进行,然后使用专用模型将其合成为音频。

  4. 强化学习: 探索强化学习技术来训练模型,根据感知质量、一致性和其他与音乐相关的标准的奖励函数来生成音乐。

  5. 生成对抗网络 (GAN): GAN 在生成逼真的图像和音频方面已显示出希望。训练一个 GAN,其中生成器创建音乐,而鉴别器则试图区分真实音乐和生成的音乐。

解决特定代码问题

  • Audiocraft 质量低: 这可能是由于模型训练不足或数据集有限造成的。考虑使用更大的数据集微调 Audiocraft 模型以获得更好的结果。此外,如前所述,尝试不同的生成参数。

  • Lyrics-Conditioned-Neural-Melody-Generation 兼容性: 该项目可能需要特定的 Python 版本或依赖项。创建一个虚拟环境并使用 requirements.txt 文件安装必要的依赖项。如果仍然遇到问题,请在项目的 GitHub 页面上寻求帮助。

  • MusicLM-pytorch 中的 Hubert 错误: 这些错误表明配置或模型加载存在问题。确保使用的是兼容版本的 fairseq hubert ,并且模型已正确加载。检查项目文档或问题页面以获取有关这些特定错误的解决方案。

其他资源和模型

  • MuseNet (OpenAI): MuseNet 是一个大型语言模型,经过训练可以生成具有不同乐器和风格的 4 分钟长的音乐作品。
  • Jukebox (OpenAI): Jukebox 是一个生成式音乐模型,可以生成完整的歌曲,包括人声,具有惊人的保真度。
  • Amper Music: Amper Music 是一个人工智能音乐创作平台,允许用户创建自定义免版税音乐。

请记住,文本到音乐的生成是一个快速发展的领域。请关注新的模型、技术和数据集,以增强的音乐生成努力。

标签:python,generate
From: 78809784

相关文章

  • 从零开始的Python开发日记(7):短信验证功能开发流程
    短信验证功能开发流程在开发一个包含登录、注册以及短信验证的功能时,你需要遵循一个系统的开发流程。以下是实现这一功能的基本步骤,包括所需的技术和代码示例。1.环境配置首先,确保你的开发环境已经配置好,并安装了必要的库和工具。pipinstallfastapiuvicornsqlalche......
  • 【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
    目录​编辑第一部分:插值的基本原理及应用1.插值的基本原理1.1插值多项式1.2拉格朗日插值 1.3牛顿插值 1.4样条插值2.插值的Python实现2.1使用NumPy进行插值2.2使用SciPy进行插值2.2.1一维插值​编辑2.2.2二维插值3.插值的应用场景3.1数据平......
  • 在家用电脑上设置 Python 和 Jupyter,尝试打开 Jupyter 笔记本并显示错误,无法获取
    我有最新的Python版本3.12.4和以下版本的Jupyter:SelectedJupytercorepackages...IPython:8.26.0ipykernel:6.29.5ipywidgets:notinstalledjupyter_client:8.6.2jupyter_core:5.7.2jupyter_server:2.14.2jupyterlab......
  • Python - Reloading a module
    Eachmoduleisloadedintomemoryonlyonceduringaninterpretersessionorduringaprogramrun,regardlessofthenumberoftimesitisimportedintoaprogram.Ifmultipleimportsoccur,themodule’scodewillnotbeexecutedagainandagain.Suppose......
  • vscode python 3.7 pylance debugpy 插件 vsix
    可能报错  crashed5timesinthelast3minutes.Theserverwillnotberestarted.  ---pylance 可能报错  cannotreadpropertiesofundefinedreadingresolveEnvironment   --- debugger可能      vscodepython3.7调试没有反应......
  • Python获取秒级时间戳与毫秒级时间戳的方法[通俗易懂]
    参考资料:https://cloud.tencent.com/developer/article/21581481、获取秒级时间戳与毫秒级时间戳、微秒级时间戳代码语言:javascript复制importtimeimportdatetimet=time.time()print(t)#原始时间数据print(int(t))......
  • CEFPython
    在Tkinter界面中直接嵌入Selenium的浏览器视图并不是一件直接的事情,因为Selenium本身并不提供图形界面嵌入的功能。Selenium主要用于自动化web浏览器,但它并不直接控制浏览器窗口的显示方式,而是依赖于WebDriver来与浏览器交互。然而,你可以使用一些替代方案来在Tkinter应用中模拟或......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-58 - 文件下载
    1.简介前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件。因此宏哥就接着讲解和分享一下:自动化测试下载文件。可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就是访问到下载页面,然后定位到要下载的文件的下载按钮后,点击按钮就可以了。其实......
  • Python - Function Annotations
     deffunc(s:str,i:int,j:int)->str:returns[i:j]Theparametersissupposedtobeastring,soweplaceacolonaftertheparameternameandthenwritestr.Parametersiandjaresupposedtobeintegerssowewriteintforthem.Returntypeis......
  • 使用带有 pythonKit XCODE 的嵌入式 Python,在 iOS 应用程序中与 OpenCV-python 签名不
    我根据Beewares使用指南在XCODE中将Python嵌入到我的iOS项目中https://github.com/beeware/Python-Apple-support/blob/main/USAGE.md运行时,我得到pythonKit找不到由ultralytics导入的cv2错误。当我将OpenCV-python添加到我的app_packages文件夹时......