语音合成论文优选:声音转换Non-Parallel Sequence-to-Sequence Voice Conversion with Disentangled Linguistic

声明:语音合成论文优选系列主要分享论文,分享论文不做直接翻译,所写的内容主要是我对论文内容的概括和个人看法。如有转载,请标注来源。

欢迎关注微信公众号:低调奋进

Non-Parallel Sequence-to-Sequence Voice Conversion with Disentangled Linguistic and Speaker Representations

本文章是中国科学技术大学语音与语言信息处理国家工程实验室2019.12.13号更新的文章,主要的工作是做使用非并行数据做声音转换,具体链接为

https://arxiv.org/pdf/1906.10508.pdf

demo链接

non-para Seqseq VC

(今天更新有点晚,最近试验太多,而且效果没达到预期的话感觉很急躁。最近也感觉有点疲惫,每次醒来都比以前晚半个钟头。涉及voice conversion这篇文章是研究vc的网友推荐,而且对解答我的疑惑,在此十分感谢)

1 研究背景

现有的声音转换(voice conversion)的解决方案主要分为:基于parallel data (转换双方的音频内容一样)和non-parallel data。其中non-parallel data的方案更有研究价值,一方面不需要parallel data,获取训练数据更容易。另一方面应用价值更高,灵活性更好,比如实现跨语言的转换。其中non-parallel data的方案比较常用的方法就是对训练的音频进行linguistic information和 speaker information进行解耦,然后组合解耦的信息。这里借用李宏毅老师的PPT内容更直观。其中进行语音信息提取的content encoder,很多方案使用单独训练的ASR来提取特征(PPG or Bottleneck feature),但该方案的效果受到ASR的影响。本文提出了一种基于seq2seq的声音转换方案,该方案的content encoder部分是和整个系统联合训练,实验证明该方案完胜voice conversion challenge 2018。

2 详细设计

文章讲述的很细,我在这里只讲解大概。该系统的训练和转换阶段如图1所示,其中(a)训练有text encoder 从文本中获取语言信息表征,recognition encoder从音频中提取语音信息表征,speaker encoder从音频中提取speaker信息,其中语音信息和说话者信息之间存在说话者判别,该部分对语音信息和说话者信息进行解耦。seq2seq decoder根据语音信息和说话者信息进行声学特征的合成。推理阶段则如(b)所示,只要输入音频即可。整个系统的结构如图2所示,其中图中的每部分的loss公式如公式1到公式7。另外本文提出训练分为两个阶段:预训练和微调。预训练是在大量数据上进行模型训练,微调步骤是在预训练模型基础上对要转换的目标接着训练,其中预训练的算法如算法1所示。(在此感谢网友解答,刚开始看图2中的text-to-speech decoder和auto-encoding decoder存在迷惑,后来明白,偶数进行text-to-speech,奇数进行auto-encoding decoder,使用同一个seq2seq decoder)

3 实验

本文实验的系统参数配置如table 1所示。本文的实验很多,先对比客观实验,然后主观对比,最后对系统的每个部分进行分别验证。对比的系统包括parallel data 的DNN, seq2seqVC和non-parallel 的cycleGAN, VCC2018以及本文系统。其中对比数据女性slt和男性rms。

首先看一下tabel 2的客观指标对比,男性和女性之间的对比,本文的提出的方案最接近parallel的seq2seqvc,但好于VC2018。其中主观的MOS评测也表现同样的结果(table 3)。

图3显示speaker embedding信息,可以看出同一个说话人的数据聚集,而且男女性分开。图4展示linguistic  information,可以看出从recognition encoder 和text encoder内容重叠,gap比较低。

接下来,比较使用数据量多少对VC的影响,结果图table4显示,其中table5展示与vcc2018进行ab test,本文使用100句远好于vcc2018。table 6对比多人之间的声音转换。

最后分析本文的每部分的效果,结果如table 7所示,删掉的模块都造成效果降低。图6和图7显示去掉lct和text input的话,结果不在像图4聚集的那么好。

4 总结

        本文提出了一种基于seq2seq的声音转换方案,该方案语言特征抽取,说话人信息抽取和整个系统是联合训练,实验证明该方案完胜voice conversion challenge 2018。

<think>我们正在处理用户在配置软件时遇到的警告:`configure: WARNING: unrecognized options: --enable-parallel`。用户希望启用并行支持,但该选项未被识别。我们需要分析原因并提供正确方法。 关键点: 1. 不同软件的配置选项不同,`--enable-parallel` 可能不是所有软件的标准选项。 2. 通常,启用并行支持需要指定MPI编译器(如mpicc, mpicxx)和相关的库依赖。 3. 有些软件使用特定的选项来启用并行,例如NetCDF使用`--enable-parallel`,而HDF5则使用`--enable-parallel`(但注意,HDF5的配置选项是`--enable-parallel`,而NetCDF-C库的并行支持依赖于HDF5的并行支持)。 根据之前的对话历史,用户可能是在安装NetCDF或HDF5时遇到此问题。在之前的回答中,我们提到过安装HDF5时使用`--enable-parallel`,而安装NetCDF时若要启用并行,需要先安装并行版的HDF5,然后在配置NetCDF时使用`--enable-parallel`(但注意,NetCDF的配置选项实际上是`--enable-parallel-tests`或通过环境变量指定MPI编译器)。 然而,现在用户遇到了`--enable-parallel`不被识别的问题,这可能是由于: - 软件版本较旧,不支持该选项。 - 软件本身不支持并行,或者并行的支持方式不同。 - 用户可能错误地使用了该选项(比如在不需要该选项的软件上使用)。 因此,我们需要指导用户检查: 步骤1:确认软件是否支持并行编译。 - 查看软件的文档,了解启用并行的正确方式。 - 运行 `./configure --help | grep -i parallel` 查看支持的选项。 步骤2:对于常见的科学计算库,以下是启用并行的典型方法: - **HDF5**:确实有`--enable-parallel`选项,但需要先设置MPI编译器环境变量(CC=mpicc等)。 - **NetCDF**:从4.1版本开始支持并行I/O,但配置选项是`--enable-parallel`(在NetCDF4.1.3及以后版本中)?实际上,NetCDF的并行支持依赖于HDF5的并行支持,并且NetCDF的配置选项是`--enable-parallel4`(用于启用NetCDF-4的并行I/O)或者`--enable-pnetcdf`(用于启用pNetCDF支持)。但具体选项可能因版本而异。 步骤3:设置环境变量。 启用并行编译通常需要指定MPI编译器,例如: ```bash export CC=mpicc export CXX=mpicxx export FC=mpif90 export F77=mpif77 ``` 步骤4:检查依赖。 确保已经安装了并行版本的HDF5(如果软件依赖HDF5),并且该HDF5是使用并行选项编译的。 步骤5:如果软件不支持`--enable-parallel`,但用户确实需要并行功能,可能需要升级软件版本或使用其他支持并行的分支。 针对不同软件的具体建议: 案例1:安装HDF5并启用并行 - 正确步骤: ```bash export CC=mpicc export CXX=mpicxx export FC=mpif90 ./configure --prefix=/path/to/install --enable-parallel make make install ``` - 注意:HDF5的配置选项`--enable-parallel`是有效的,如果出现未识别,可能是版本问题(很老的版本可能没有该选项?)或者拼写错误。 案例2:安装NetCDF并启用并行 - 需要先安装并行HDF5(如上)。 - 然后配置NetCDF: ```bash export CC=mpicc export CPPFLAGS="-I/path/to/parallel-hdf5/include" export LDFLAGS="-L/path/to/parallel-hdf5/lib" export LD_LIBRARY_PATH="/path/to/parallel-hdf5/lib:$LD_LIBRARY_PATH" ./configure --prefix=/path/to/install --enable-parallel-tests # 注意:NetCDF4的并行选项可能是--enable-parallel4(针对NetCDF-4的并行I/O)或--enable-pnetcdf(针对pNetCDF) ``` - 注意:NetCDF-C库(版本4.x)的并行支持选项在4.4版本之前可能是`--enable-netcdf-4 --enable-parallel4`(但具体选项请查看对应版本的INSTALL文档)。 由于用户遇到的警告是`unrecognized options: --enable-parallel`,我们需要根据他正在配置的软件给出具体建议。 如果用户正在配置HDF5,那么`--enable-parallel`应该是有效的(除非版本非常旧)。如果无效,请检查版本,并考虑升级HDF5。 如果用户正在配置NetCDF,那么正确的选项可能是`--enable-parallel4`(用于启用NetCDF-4的并行I/O)或`--enable-pnetcdf`(用于启用pNetCDF支持)。在NetCDF的配置脚本中,`--enable-parallel`可能不是标准选项。 因此,总结解决方案: 1. 首先确认软件名称和版本。 2. 通过`./configure --help`查看支持的选项。 3. 根据软件文档设置正确的并行选项。 4. 确保环境变量(CC, CXX等)指向MPI编译器。 5. 确保依赖库(如并行HDF5)已正确安装。 如果用户无法确定,可以提供以下信息: - 软件名称和版本 - 运行`./configure --help | grep parallel`的输出 这样我们可以更准确地帮助用户。 相关问题: 1. 如何检查已安装的HDF5是否支持并行? 2. 在配置NetCDF时如何启用并行I/O? 3. 安装并行版HDF5时遇到找不到`mpicc`的问题怎么办? 4. 如何设置环境变量`LD_LIBRARY_PATH`以包含自定义安装的库路径?</think>### 解决 `configure: WARNING: unrecognized options: --enable-parallel` 的方法 当编译科学计算软件(如 HDF5、NetCDF 等)时出现该警告,通常是因为**启用并行支持的方式错误**或**依赖环境未正确配置**。以下是逐步解决方案: --- #### 1. **确认软件是否支持并行编译** - 运行帮助命令检查有效选项: ```bash ./configure --help | grep -i "parallel" ``` - 常见软件的并行支持选项: - **HDF5**:正确选项为 `--enable-parallel`(需搭配 MPI 编译器)[^1] - **NetCDF**:需通过 `--enable-parallel4` 或 `--enable-pnetcdf` 启用 - **OpenMPI/MPICH**:使用 `--with-thread-level=mpi-thread-multiple` --- #### 2. **正确设置 MPI 编译器环境变量** 并行编译**必须**指定 MPI 编译器路径: ```bash export CC=mpicc # C 编译器 export CXX=mpicxx # C++ 编译器 export FC=mpif90 # Fortran 编译器 export F77=mpif77 # Fortran 77 编译器 ``` > **验证**:运行 `mpicc --version` 确认 MPI 已安装 --- #### 3. **修正配置命令** - **HDF5 示例**: ```bash ./configure --prefix=/opt/hdf5 --enable-parallel \ --enable-fortran --enable-cxx ``` > 注意:HDF5 的并行选项是 `--enable-parallel`(非 `--enable-parallel`)[^1] - **NetCDF 示例**: ```bash ./configure --prefix=/opt/netcdf --enable-parallel4 \ --with-hdf5=/opt/hdf5 ``` > 需先安装并行版 HDF5 --- #### 4. **检查依赖库路径** 确保依赖库(如 MPI、HDF5)路径在环境变量中: ```bash export CPPFLAGS="-I/opt/hdf5/include -I/opt/mpi/include" export LDFLAGS="-L/opt/hdf5/lib -L/opt/mpi/lib" export LD_LIBRARY_PATH="/opt/hdf5/lib:/opt/mpi/lib:$LD_LIBRARY_PATH" ``` --- #### 5. **常见错误排查** - **选项拼写错误**: `--enable-parallel`(正确) vs `--enable-parallel`(错误) - **MPI 未安装**: 安装 OpenMPI:`sudo apt install openmpi-bin libopenmpi-dev` - **版本不兼容**: NetCDF 4.8.0+ 要求 HDF5 1.10.5+ 以支持并行[^2] - **日志分析**: 检查 `config.log` 文件中的错误详情 --- ### 验证并行支持是否生效 编译安装后运行测试: ```bash # HDF5 并行测试 mpirun -np 4 ./h5perf -T -p # NetCDF 并行测试 cd nc_test4 mpirun -np 4 ./run_par_test.sh ``` 成功输出应包含 `Parallel I/O` 或 `MPI` 相关提示[^2]。 --- ### 相关问题 1. 如何检查已安装的 HDF5 是否支持并行 I/O? 2. 在配置 NetCDF 时如何同时启用 HDF5 和并行支持? 3. 使用 `mpirun` 时出现 `ORTE was unable to start` 错误如何解决? 4. 如何为不同版本的 MPI 编译器(如 Intel MPI 与 OpenMPI)配置科学计算库? [^1]: 正常官网下载安装,自行修改安装路径: # Set environment variables for MPI compilers export CC=mpicc export CXX=mpicxx export FC=mpif90 export F77=mpif77 # Configure HDF5 ./configure --prefix=/home/jin/hdf5 --enable-parallel # Make and install HDF5 make -j 4 sudo make install 安装NetCDF [^2]: 注意:上面红色的两个选项是他人很多次实验后证明必须的(参考资料1)。--disable-dap的原因是缺少一个‘curl’的lib, --disable-netcdf-4是报错中提出的解决办法,尽管我个人暂时没有搞清楚为什么。不写这两个,在configure的时候就会报错,导致后面make失败。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫永强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值