当前位置:   article > 正文

开源音频处理库AudioLDM

audioldm

环境

  • windows 10 64bit

  • AudioLDM 0.1.1

  • anaconda with python 3.8

  • nvidia gtx 1070Ti

简介

AudioLDM 是一个开源的音频处理库,它可以用于实现语音识别、语音合成、语音转换等应用,很多 AIGC 大模型都在用它。该库提供了一组音频信号处理算法,包括语音信号的预处理、特征提取、噪声抑制、语音增强、声学模型训练等。

项目开源地址:https://github.com/haoheliu/AudioLDM

截止到目前(20230505),AudioLDM 的几大核心功能

  • 文本到音频(Text-to-Audio):给予文本输入,生成音频

  • 音频到音频(Audio-to-Audio):给定一个音频,生成另一个包含相同类型声音的音频

  • 文本指导的音频到音频的风格转换(Text-guided Audio-to-Audio Style Transfer):使用文本描述将一个音频的声音转移到另一个音频中

实操

首先,使用 conda 创建一个全新的 python 虚拟环境

  1. conda create -n audioldm python=3.8 
  2. conda activate audioldm

库的安装可以直接使用 pip

pip install audioldm

使用之前,我们先准备好模型,其实在命令处理的时候,会自动去下载,但是由于网络和文件太大的问题,经常导致失败。

这里提供了一份,供大家下载

链接:https://pan.quark.cn/s/51ad4c52bd5f

解压后,将文件夹 audioldm 放到 C:\Users\$你的用户名\.cache 下面,没有的文件夹,自己创建

链接:https://pan.quark.cn/s/b85444078028

解压后,同样也是将文件夹 huggingface 放到 C:\Users\$你的用户名\.cache 下面

完成后,就可以直接使用命令行工具 audioldm 来体验体验了

  1. # 根据文本来生成
  2. audioldm -t "A hammer is hitting a wooden surface"
  1. # 根据声音生成
  2. audioldm --file_path trumpet.wav
  1. #  声音风格迁移
  2. audioldm --mode "transfer" --file_path trumpet.wav -t "Children Singing"

如果在跑上述命令时出现类似下面的报错

  1. Load AudioLDM: %s audioldm-m-full
  2. DiffusionWrapper has 415.95 M params.
  3. C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\torchlibrosa\stft.py:193: FutureWarning: Pass size=1024 as keyword args. From version 0.10 passing these as positional arguments will result in an error
  4.   fft_window = librosa.util.pad_center(fft_window, n_fft)
  5. C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\torch\functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\native\TensorShape.cpp:3484.)
  6.   return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
  7. Some weights of the model checkpoint at roberta-base were not used when initializing RobertaModel: ['lm_head.dense.bias''lm_head.decoder.weight''lm_head.bias''lm_head.dense.weight''lm_head.layer_norm.weight''lm_head.layer_norm.bias']
  8. - This IS expected if you are initializing RobertaModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).
  9. - This IS NOT expected if you are initializing RobertaModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).
  10. Traceback (most recent call last):
  11.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\runpy.py", line 194, in _run_module_as_main
  12.     return _run_code(code, main_globals, None,
  13.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\runpy.py", line 87, in _run_code
  14.     exec(code, run_globals)
  15.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\audioldm\__main__.py", line 152, in <module>
  16.     audioldm = build_model(model_name=args.model_name)
  17.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\audioldm\pipeline.py", line 89, in build_model
  18.     latent_diffusion = latent_diffusion.to(device)
  19.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\torch\nn\modules\module.py", line 1145, in to
  20.     return self._apply(convert)
  21.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\torch\nn\modules\module.py", line 797, in _apply
  22.     module._apply(fn)
  23.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\torch\nn\modules\module.py", line 844, in _apply
  24.     self._buffers[key] = fn(buf)
  25.   File "C:\Users\xgx\anaconda3\envs\audioldm\lib\site-packages\torch\nn\modules\module.py", line 1143, in convert
  26.     return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
  27. torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 08.00 GiB total capacity; 7.30 GiB already allocated; 0 bytes free; 7.36 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

这是由于显卡的显存小了,我这里测试了,8G 是跑不了默认的模型,也就是 audioldm-full-l.ckpt。因此,可以更换更小的模型,通过参数 --model_name 来指定

audioldm --model_name audioldm-s-full-v2 -t "A hammer is hitting a wooden surface"

除了可以使用命令行来处理声音,源码中还集成了  (gradio)[https://xugaoxiang.com/2023/04/27/python-web-gradio/]  这个 web 框架,方便大家在网页中操作

  1. git clone https://github.com/haoheliu/AudioLDM
  2. cd AudioLDM
  3. python app.py

f0eaf6223da7e4874b514e9a57c49cd6.png

audioldm gradio

对于不懂技术的同学来讲,这个还是非常友好的。

备注

关于中文的使用问题,测试了,发现效果很差。可以来个曲线救国,就是使用翻译软件将中文翻成英文,然后使用。这里推荐一个 chrome 浏览器的插件 deepl,非常好用,插件地址:https://chrome.google.com/webstore/detail/deepl-translate-reading-w/cofdbpoegempjloogbagkncekinflcnj?utm_source=chrome-ntp-icon

FAQ

  1. Traceback (most recent call last):
  2.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\connectionpool.py", line 700, in urlopen
  3.     self._prepare_proxy(conn)
  4.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\connectionpool.py", line 994, in _prepare_proxy
  5.     conn.connect()
  6.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\connection.py", line 364, in connect
  7.     conn = self._connect_tls_proxy(hostname, conn)
  8.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\connection.py", line 501, in _connect_tls_proxy
  9.     socket = ssl_wrap_socket(
  10.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\util\ssl_.py", line 453, in ssl_wrap_socket
  11.     ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
  12.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\util\ssl_.py", line 495, in _ssl_wrap_socket_impl
  13.     return ssl_context.wrap_socket(sock)
  14.   File "D:\Tools\anaconda3\envs\tf\lib\ssl.py", line 500, in wrap_socket
  15.     return self.sslsocket_class._create(
  16.   File "D:\Tools\anaconda3\envs\tf\lib\ssl.py", line 1040, in _create
  17.     self.do_handshake()
  18.   File "D:\Tools\anaconda3\envs\tf\lib\ssl.py", line 1309, in do_handshake
  19.     self._sslobj.do_handshake()
  20. ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1131)
  21. During handling of the above exception, another exception occurred:
  22. Traceback (most recent call last):
  23.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\requests\adapters.py", line 440, in send
  24.     resp = conn.urlopen(
  25.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\connectionpool.py", line 785, in urlopen
  26.     retries = retries.increment(
  27.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\urllib3\util\retry.py", line 592, in increment
  28.     raise MaxRetryError(_pool, url, error or ResponseError(cause))
  29. urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /roberta-base/resolve/main/vocab.json (Caused by SSLError(SSLEOFError(8'EOF occurred in violation of protocol (_ssl.c:1131)')))
  30. During handling of the above exception, another exception occurred:
  31. Traceback (most recent call last):
  32.   File "D:\Tools\anaconda3\envs\tf\lib\runpy.py", line 194, in _run_module_as_main
  33.     return _run_code(code, main_globals, None,
  34.   File "D:\Tools\anaconda3\envs\tf\lib\runpy.py", line 87, in _run_code
  35.     exec(code, run_globals)
  36.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\__main__.py", line 152, in <module>
  37.     audioldm = build_model(model_name=args.model_name)
  38.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\pipeline.py", line 81, in build_model
  39.     latent_diffusion = LatentDiffusion(**config["model"]["params"])
  40.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\ldm.py", line 66, in __init__
  41.     self.instantiate_cond_stage(cond_stage_config)
  42.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\ldm.py", line 125, in instantiate_cond_stage
  43.     model = instantiate_from_config(config)
  44.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\utils.py", line 97, in instantiate_from_config
  45.     return get_obj_from_str(config["target"])(**config.get("params", dict()))
  46.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\utils.py", line 87, in get_obj_from_str
  47.     return getattr(importlib.import_module(module, package=None), cls)
  48.   File "D:\Tools\anaconda3\envs\tf\lib\importlib\__init__.py", line 127, in import_module
  49.     return _bootstrap._gcd_import(name[level:], package, level)
  50.   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  51.   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  52.   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  53.   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  54.   File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  55.   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  56.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\clap\encoders.py", line 4, in <module>
  57.     from audioldm.clap.training.data import get_audio_features
  58.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\audioldm\clap\training\data.py", line 58, in <module>
  59.     tokenize = RobertaTokenizer.from_pretrained("roberta-base")
  60. ined
  61.     resolved_vocab_files[file_id] = cached_file(
  62.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\transformers\utils\hub.py", line 409, in cached_file
  63.     resolved_file = hf_hub_download(
  64.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\utils\_validators.py", line 120, in _inner_fn
  65.     return fn(*args, **kwargs)
  66.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\file_download.py", line 1181, in hf_hub_download
  67.     metadata = get_hf_file_metadata(
  68.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\utils\_validators.py", line 120, in _inner_fn
  69.     return fn(*args, **kwargs)
  70.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\file_download.py", line 1513, in get_hf_file_metadata
  71.     r = _request_wrapper(
  72.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\file_download.py", line 407, in _request_wrapper
  73.     response = _request_wrapper(
  74.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\file_download.py", line 442, in _request_wrapper
  75.     return http_backoff(
  76.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\huggingface_hub\utils\_http.py", line 212, in http_backoff
  77.     response = session.request(method=method, url=url, **kwargs)
  78.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\requests\sessions.py", line 529, in request
  79.     resp = self.send(prep, **send_kwargs)
  80.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\requests\sessions.py", line 645, in send
  81.     r = adapter.send(request, **kwargs)
  82.   File "D:\Tools\anaconda3\envs\tf\lib\site-packages\requests\adapters.py", line 517, in send
  83.     raise SSLError(e, request=request)
  84. requests.exceptions.SSLError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /roberta-base/resolve/main/vocab.json (Caused by SSLError(SSLEOFError(8'EOF occurred in violation of protocol (_ssl.c:1131)')))

解决方法是,降低 urllib3 的版本号

pip install urllib3==1.25.11

参考资料

  • https://github.com/haoheliu/AudioLDM

  • https://github.com/gradio-app/gradio

  • https://zenodo.org/record/7698295#.ZFNlF3ZByUk

3c055b226adc6e27bf6d8ac3df858533.jpeg

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号