wsj0数据集原始文件.wv1.wv2转换成wav文件

文章目录

      • 准备
      • 一、获取WSJO数据集
      • 二、安装sph2pipe
      • 三、转换代码
      • 四、结果展示

​ 最近做语音分离实验需要用到wsj0-2mix数据集,但是从李宏毅语音分离教程里面获取的wsj0-2mix只有一部分。从网上获取到了完整的WSJO数据集后,由于原始的语音文件后缀是wv1或者wv2,创建wsj0-2mix需要wav文件,所以需要通过工具进行转换。网上的教程使用后只能生成一堆空文件夹,无法生成转换后的wav文件。因此,在成功解决这个问题后,把采用的方法分享一下,按照下列步骤能完美进行转换。

准备

  • 平台:Windows
  • 工具:
    • python
    • sph2pipe
  • 数据集:WSJO

一、获取WSJO数据集

官网可以申请该数据集,想要的可以私信或者发加q3280461976

二、安装sph2pipe

大家按照之前网上的方法只能生成一堆空文件夹就是因为没有安装sph2pipe。按照下列步骤操作

  1. 下载sph2pipe(https://www.ldc.upenn.edu/language-resources/tools/sphere-conversion-tools),选择版本2.5,2.1在Windows下已经无法运行

image-20231129160431454

  1. 配置环境变量,如下将sph2pipe.exe的路径加入你电脑的系统变量Path里面,

    image-20231129161056053

  2. 找到你下载的文件,可以看到里面有一个exe文件

image-20231129160558692

  1. 验证sph2pipe能否成功运行,首先运行cmd或者powershell,保证当前目录里面含有sph2pipe.exe文件,输入sph2pipe,有如下提示就可以了

image-20231129160803574

  1. 下面就可以使用sph2pipe进行类型转换

三、转换代码

下面就是转换代码,详细说一下你需要改哪些地方,特别是第三点,非常重要!!!

  1. root_dir:改成你下载的wsj0的根目录文件,代码里面有例子
  2. my_path:改成你想要保存转换后wav文件存储的路径
  3. cmd = "E: \sph2pipe_v2.5.tar \sph2pipe_v2.5\sph2pipe -f wav " + speech_dir + " " + target_dir:把E: \sph2pipe_v2.5.tar \sph2pipe_v2.5改成你sph2pipe.exe存在的路径,注意代码中是“\ \”(双斜杠),
"""
# example:
# 11-1.1/wsj0/si_tr_s/01t/01to030v.wv1 is converted to wav and
# stored in YOUR_PATH/wsj0/si_tr_s/01t/01to030v.wav
"""
import os

# 你下载的wsj0的根目录 例子:E:\\csr_1_comp_LDC93S6A\\csr_1_comp,
root_dir = ""

# the disc number
disc_dir = []
for list_disc in os.listdir(root_dir):
    if list_disc not in ["text", "11-13.1"]: #doc file and 11-13.1 file do not contain .wv files
        # the data dir for each disc
        disc_dir.append(os.path.join(root_dir, list_disc, "wsj0"))

# 转换后的文件想要保存的位置
my_path = ""
if not os.path.exists(my_path):
    os.mkdir(my_path)
# # the sub_data dir for each disc
for i, list_sub_data in enumerate(disc_dir):
    for sub_data_dir in os.listdir(list_sub_data):
        if (not sub_data_dir.startswith("si")) and (not sub_data_dir.startswith("sd")):
            continue
        s_dir = os.path.join(my_path, sub_data_dir)
        if not os.path.exists(s_dir):
            os.mkdir(s_dir)
        if sub_data_dir[0][0] == 's':
            datatype_dir = os.path.join(list_sub_data, sub_data_dir)
            for list_spk in os.listdir(datatype_dir):
                spk_dir = os.path.join(s_dir, list_spk)
                spk_dir_abs = os.path.join(datatype_dir, list_spk)
                if not os.path.exists(spk_dir):
                    os.mkdir(spk_dir)
                for wv_file in os.listdir(spk_dir_abs):
                    if (not wv_file.endswith('.wv1')) and (not wv_file.endswith('.wv2')):
                        continue
                    speech_dir = os.path.join(spk_dir_abs, wv_file)
                    if wv_file.split('.')[1] == "wv1":
                        target_name = wv_file.split(sep='.')[0] + '.wav'
                    elif wv_file.split('.')[1] == 'wv2':
                        target_name = wv_file.split(sep='.')[0] + '_1.wav'
                    target_dir = spk_dir + '\\' + target_name
                    # 一定要注意!!! sph2pipe -f wav前面的路径必须包含上面讲到的sph2pipe.exe,你只需要根据你sph2pipe.exe存放的位置修改这段路径:E:\\sph2pipe_v2.5.tar\\sph2pipe_v2.5
                    cmd = "E:\\sph2pipe_v2.5.tar\\sph2pipe_v2.5\\sph2pipe -f wav " + speech_dir + " " + target_dir
                    os.system(cmd)

四、结果展示

  1. 编译器窗口:如果你没有按照sph2pipe,终端输出的就是一堆红色乱码,然后生成的文件夹都是空的

    image-20231129162213776

  2. 生成文件,比如我打开第一个sd_dt_05,完美转换

image-20231129162310664image-20231129162508838

image-20231129162528077

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/200264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网关路由器双栈配置中的IPv6相关选项解析

1、引言 讲知识往往是枯燥无味的,我们先从问题入手。家庭网关(光猫)、路由器是我们每个人或多或少都有所接触的2种设备。现在一般都是光纤入户,通常每个家庭配备一个光猫和一台家用路由器。 目前有许多网络服务已经提供了IPv6支…

距离“全自动”漏洞挖掘又近了一步!腾讯安全大数据实验室论文入选ACM CCS 2023

计算机领域国际权威学术顶会ACM CCS 2023于11月26日在丹麦哥本哈根开幕。腾讯安全大数据实验室团队论文《Hopper: Interpretative Fuzzing for Libraries》被大会收录,昨天,实验室研究员谢雨轩受邀出席大会进行主题分享。 该论文提出了解释性模糊测试&a…

前端笔试遇到的坑-100题

1.闭包 let 形成闭包 var全局变量 function test() {for (var i 0; i < 6; i) {console.log(i); //1 2 3 4 5 6// setTimeout(() > {// console.log(i);// }, 0); 6 6 6 6 6 6 6} } test();var array []; for (var i 0; i < 3; i) {array.push(() > i);…

全国高校走进深算院:共话国产数据库产教融合生态建设

近日&#xff0c;由教育部高等学校计算机类专业教学指导委员会、全国高等学校计算机教育研究会主办&#xff0c;清华大学出版社、深圳市信息技术应用创新联盟承办的“2023全国高校走进信创企业研学活动”顺利举办。来自全国各地30余家高校的近80位院校领导、教师代表走进了深圳…

WordPress更改文章分类插件

当WP网站内容比较多的时候&#xff0c;有时候如果涉及到批量修改文章分类&#xff0c;如果一个个的去操作的话就太费事了&#xff0c;如果使用后台批量修改分类的话是增加旧分类不会取消选择&#xff0c;就就导致我们适得其反还需要一个一个的去编辑取消&#xff0c;实在繁琐了…

年终好价节有什么必买的数码好物?值得入手的数码好物推荐

大家是不是都没听说过好价节&#xff1f;直白点说就是原来的双十二购物狂欢节&#xff0c;只不过换一个说法&#xff0c;不过今年毕竟是第一年换个说法&#xff0c;所以淘宝年终好价节优惠还是值得我们期待的&#xff01;作为年前的最后一波大促&#xff0c;一起来看看有哪些好…

redis 内存机制探索篇

info memory 查看redis 内存使用情况出现的问题&#xff0c;公司在导入大量redis key 的时候&#xff0c;想要看一下redis 内存使用情况 &#xff0c;发现used_memory_peak_perc 和 used_memory_dataset_perc 马上达到100%&#xff0c;这个时候很慌张&#xff0c;是不是当前red…

智能AI问答系统ChatGPT网站系统源码+Midjourney绘画+支持GPT-4-Turbo模型+支持GPT-4图片理解能力

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

亚马逊发布人工智能助手Amazon Q,一起来看看有什么功能

Amazon 在11.28日Re:Invent大会上推出人工智能助手Amazon Q&#xff0c;主要面向企业客户&#xff0c;提供个性化服务。号称是专为工作定制的生成式人工智能助手。Your generative Al-powered assistant tailored for work 核心能力企业知识库&#xff1a;为客户提供快速、相关…

低功耗蓝牙模块在医疗保健领域中的创新应用

医疗保健领域一直在追求更先进的技术&#xff0c;以提高医疗服务的效率和质量。低功耗蓝牙技术的崭新应用为医疗设备的互联性和数据传输提供了可靠的解决方案。本文将深入研究低功耗蓝牙模块在医疗保健领域中的应用&#xff0c;重点关注其在可穿戴设备、远程医疗监测和患者数据…

Python编程基础:数据类型和运算符解析

想要学习Python编程语言&#xff1f;本文将为您介绍Python中常见的数据类型和运算符&#xff0c;为您打下坚实的编程基础。了解不同的数据类型和运算符&#xff0c;掌握它们之间的配合方式&#xff0c;让您能够更轻松地进行数据处理和计算任务。无论您是初学者还是有一定经验的…

网页能做二维码吗?1分钟学会链接转码的方法

想要将链接做成二维码图片&#xff0c;让他人通过扫码跳转链接以提高网页的传播性&#xff0c;是现在很常用的一种手段。主要在于二维码是现在最常用的一种展现方式&#xff0c;更加符合现在人的行为习惯&#xff0c;那么网址二维码该如何操作呢&#xff1f;今天小编给大家讲解…

对数据页的理解

1.InnoDB 是如何存储数据的&#xff1f; 数据表中的记录是按照行来存储的&#xff0c;但是数据库的读取并不以「行」为单位&#xff0c;否则一次读取&#xff08;也就是一次 I/O 操作&#xff09;只能处理一行数据&#xff0c;效率会非常低。 因此&#xff0c;InnoDB 的数据是按…

例:降压型直流开关稳压电源

继电器控制开断&#xff0c;记得要做防抖 单片机DAC控制输出电压 LM5117太复杂可以用TPS5450 二极管选择&#xff0c;可以选一个也可以选两个并联 一体成型电感排第一&#xff0c;铁硅铝电感排第二

CSS特效021:蛇形左右扭动的效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

如何有效地开发客户关系?

如何有效地开发客户关系&#xff1f; 有效地开发客户关系&#xff0c;是企业在竞争激烈的市场中获得优势的关键。通过深入了解客户需求、提供优质的产品和服务、建立良好的沟通渠道、提供个性化的体验以及建立长期合作关系等方式&#xff0c;企业可以有效地开发客户关系&#…

unity学习笔记

一、Transform类 在Unity中&#xff0c;Transform 类是一种用于表示和操作游戏对象位置、旋转和缩放的类。每个游戏对象都有一个关联的 Transform 组件&#xff0c;该组件定义了对象在场景中的空间变换信息。 1.常见属性和方法 获取位置 相对与世界坐标系&#xff1a;Debug.…

使用Java给钉钉群发消息

目录 目录 1.安装依赖 2.编写工具类 3.测试 安全设置 Webhook 代码编写 运行测试 4.艾特全部功能 1.安装依赖 <dependency><groupId>com.taobao.dingding</groupId><artifactId>taobao-sdk</artifactId><version>1.0.0</versio…

java多线程-扩展知识三:乐观锁与悲观锁

1、悲观锁 悲观锁有点像是一位比较悲观&#xff08;也可以说是未雨绸缪&#xff09;的人&#xff0c;总是会假设最坏的情况&#xff0c;避免出现问题。 悲观锁总是假设最坏的情况&#xff0c;认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改)&#xff0c;所以每次…

Windows系统搭建Appium 2 和 Appium Inspector 环境

前言 自 2022 年 1 月 1 日起&#xff0c;Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x&#xff0c;需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具&#xff0c;它带来了以下重要改进&#xff1a;  …