语音处理:Python实现wav与pcm文件格式转换

2023-05-16

语音处理:Python实现wav与pcm格式转换

    • 知识点
    • wav转pcm
    • pcm转wav
    • 参考资料

知识点


  • wave包的读写及参数设置
  • 文件路径操作拼接
  • 音频相关参数了解

wav文件存储的参数信息有:通道数、采样率、位深,其他参数如文件大小,数据大小等。详细内容见:wav文件格式解析。

wav转pcm


思路:

  • 利用wav工具包,跳过包头,直接读取裸流bytes数据
  • 将裸流数据wb模式按二进制写入pcm文件中
import os
import wave

def wav2pcm(input_dir, out_dir) :
    with open(input_dir, 'rb') as wavfile:
        ori_data = wavfile.read() ## 读出来是裸流bytes数据
        wavfile.close()
    with open(out_dir, 'wb') as pcmfile:
        pcmfile.write(ori_data)
        pcmfile.close()

if __name__ == '__main__':
    wav2pcm(os.path.join(r"D:\seq\input\6channel_file.wav"), 
            r"D:\seq\out\6channel_file_48k_16bit.pcm")

pcm转wav


## 功能:将pcm文件转成对应wav文件,无压缩

import os
import wave

def pcm2wav(pcm_path, out_path, channel, sample_rate):
    with open(pcm_path, 'rb') as pcm_file:
        pcm_data = pcm_file.read()
        pcm_file.close()
    with wave.open(out_path, 'wb') as wav_file:
        ## 不解之处, 16 // 8, 第4个参数0为何有效
        wav_file.setparams((channel, 16 // 8, sample_rate, 0, 'NONE', 'NONE'))
        wav_file.writeframes(pcm_data)
        wav_file.close()

if __name__ == '__main__':
    dir = r"C:\Users\Administrator\Desktop\test"
    out_dir = dir + r"\outwav"
    sample_rate = 48000
    channel = 1
    out_path = os.path.join(out_dir, "16k.wav")
    pcm2wav(os.path.join(dir, "16k.pcm"), out_path, channel, sample_rate)

参考资料


  1. Python的wave工具包读写WAV操作说明
  2. WAV和PCM的转换(Python版本)
  3. python音频处理常用到的操作
  4. python标准库wave的使用说明
  5. PCM数据包格式说明
  6. WAV文件格式解析
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

语音处理:Python实现wav与pcm文件格式转换 的相关文章

随机推荐

  • 离线升级:openssh从8.1版本至8.4版本

    由于公司有内外网之分 xff0c 因此内网的升级需要将所需要的包从外网传到内网进行离线升级 如果大家也是这种情况 xff0c 建议升级的时候务必要先拿一台不常用服务器 xff08 测试环境的话如果不常用也可以在上面升级 xff09 试一下
  • debian 10 修改网卡名称为eth0

    1 编辑文件 etc default grub 修改下面的值 初始值 GRUB CMDLINE LINUX 61 34 34 修改后 GRUB CMDLINE LINUX 61 34 net ifnames 61 0 biosdevname
  • ubuntu 安装过程中 安装界面卡死完美解决办法 笔记本

    在安装ubuntu过程中 xff0c 由于是神舟电脑 xff0c 问的淘宝客服 xff0c 没想到比我还白 xff0c 在网上搜了资料 xff0c 总结如下 xff1a 1 设置优盘启动 这里就不多说了 xff0c 网上资料很多 xff0c
  • Codeforces科学刷题指南,一图一表便够了

    简要介绍如何科学地刷算法题 xff0c 来提高自己解决问题的能力 xff0c 并利用爬虫抓取Codeforces的题库 xff0c 来分析题目难度以及算法分类的关系 无论做什么事 xff0c 多尝试 找套路 然后刻意练习都是至关重要的 对信
  • linux安装busybox教程

    获取软件包 下载busybox安装包1 31 0当前最新稳定版本 xff0c 并解压 xff1a span class token function wget span https busybox net downloads busybox
  • 执行chmod -R 777 / 临时恢复ssh

    span class token function cd span etc span class token function chmod span 644 span class token function passwd span gro
  • XFS文件系统扩容

    XFS文件系统扩容 注意 xff1a 备份 xff01 备份 xff01 备份 xff01 操作前备份 xff01 查看磁盘挂载 分区信息 root 64 BJ CentOS7 span class token comment df hT
  • centos密码正确却出现登录闪退到输入用户名密码界面

    问题现象 xff1a 输入密码用返回登录界面 xff1b 定位 xff1a etc profile存在特殊环境变量 xff08 注释掉 xff09 root bash profile 正常 xff08 如果有特殊环境变量也注释 xff09
  • Windows中使用netsh命令进行端口转发

    在Linux中 xff0c 使用iptables可以非常轻松地配置端口重定向 在Windows Server系统上 xff0c 路由和远程访问服务 xff08 RRAS xff09 通过使用虚拟专用网络 VP N 或拨号连接支持远程用户或站
  • ubuntu启动,提示引导丢失

    报错如下 xff1a 解决方案 xff1a 这种情况大多是引导项或者系统受损了 xff0c 优先看文件是否有缺失 xff0c 确认文件完整后可进行以下操作 mkdir span class token operator span p spa
  • centos7重新安装polket

    问题现象 xff1a sshd服务重启报错 xff1a 报错内容包含 xff1a Authorization not available Check if polkit service is ruming or see debug mess
  • 执行ifup或者dhclient报错dhclient error while loading shared libraries libdns-export.so.1102解决方案。

    服务器没有网络 xff0c 其他方式登录服务器后发现网卡没有启动 xff1a eth0网卡处于down状态 执行dhclient或者ifup激活网卡出现dhclient error while loading shared librarie
  • btrfs基本介绍及应用

    一 btrfs基本概念 btrfs文件系统是2007年Oracle开发 xff0c 支持GPL协议 xff0c 为了取代Linux早期的ext系列文件系统 btrfs核心特性 xff1a 多物理卷支持 xff1a btrfs可由多个底层物理
  • windows 配置FTP教程

    由于windows版本不同在配置上有部分不一致 xff0c 我这边主要以windows server 2008以及Windows server 2012 做演示 1 Windows 2008 通过 IIS 配置 FTP 操作步骤 IIS的安
  • Windows实例通过IIS如何搭建多个FTP站点

    FTP搭建多个站点可以通过不同的端口号来进行实现 xff0c FTP标准命令端口号为21 xff0c 数据端口为20 第一个FTP站点默认的21端口即可 先进行添加第一个FTP站点 xff0c 选择本机外网IP xff0c 端口默认21 选
  • xubuntu-desktop找不到状态栏怎么办?

    1 右键找到设置中的panel选项 2 找到恢复默认选项 3 点击xfce选项 xff0c 然后点左下角的齿轮按钮 开心不
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息

    1 安装CPU温度检测软件sensors apt install lm sensors y 传感器探测 xff0c 命令 xff1a sensors detect 全部选择yes即可 xff0c 可能其中一个地方提示 ENTER xff0c
  • Proxmox ve(PVE)开启硬件直通

    1 修改grub文件 vi etc default grub 找到GRUB CMDLINE LINUX DEFAULT 61 34 quiet 34 这行改为 GRUB CMDLINE LINUX DEFAULT 61 34 quiet i
  • HAL库函数IIC

    span class token comment 64 defgroup I2C XferOptions definition I2C XferOptions definition 64 span span class token macr
  • 语音处理:Python实现wav与pcm文件格式转换

    语音处理 xff1a Python实现wav与pcm格式转换 知识点wav转pcmpcm转wav参考资料 知识点 wave包的读写及参数设置文件路径操作拼接音频相关参数了解 wav文件存储的参数信息有 xff1a 通道数 采样率 位深 xf