Scipy文件输入/输出mat,wav,mp3

moon (df)

降噪后的moon_cleaned (df)

导入: import scipy.io as spio

读写.mat 文件

写入 .savemat()

将上面两个df数据,存储到“moon_cleaned.mat”文件中,分布命名为{‘moon_cleaned’和’moon_origin’

import scipy.io as spiospio.savemat('moon_cleaned.mat', mdict={'moon_cleaned': moon_cleaned,  'moon_origin': moon})

读取 .loadmat()

读取上面的“moon_cleaned.mat”文件

data = spio.loadmat('./moon_cleaned.mat')
data


可分别取df,这里取‘moon_origin’为例:

data['moon_origin']

wav

使用scipy处理wav文件

  • WAV为微软公司(Microsoft)开发的一种声音文件格式,音质好
  • 单声道是一维矩阵,立体声(双声道)是二维
  • 标准的采样频率为:11.025kHz(语音效果)、22.05kHz(音乐效果)、44.1kHz(高保真效果)
  • 导包:from scipy.io import wavfile

读 wavfile.read()

 from scipy.io import wavfile# 返回值为元组,分别为:“采样频率: 和 ”数据“_, deng = wavfile.read('../data/邓紫棋-喜欢你.wav')

wav的音乐文件, 数据类型必须是int16,取值范围: -32768 ~ +32767

查看矩阵形状

deng.shape


10776444 / 44100 剩下的是秒数

#算分钟数
10776444 / 44100 / 60


4.072分钟 相当于 4分42秒

截取一半的音频只需要 len(deng)//2 (整除)

再读取另一首歌

_, lin = wavfile.read('../data/林俊杰-爱不会绝迹.wav')
lin

拼接 np.vstack()

将两首歌各自截取一半,再拼接成一首歌

# 拼接
mix_music = np.vstack((deng[:len(deng)// 2], lin[:len(lin)//2]))

写 wavfile.write()

# 导出
wavfile.write('mix_music.wav', 44100, mix_music)

MP3

使用pydub+ ffmpeg处理mp3文件

  • 需要安装pydub
  • ffmpeg需要下载,并解压将3个文件放至Python安装目录中的bin目录下,然后还要配置环境变量
  • pydup中的AudioSegment可以处理mp3文件

导包:

from pydub import AudioSegment

读: AudioSegment.from_mp3()

jing = AudioSegment.from_mp3('../data/难念的经.mp3')
type(jing)

返回一个AudioSegment对象

可直接运行播放音频(需要等一阵子)

jing


获取原始数据

jing_data = jing.get_array_of_samples()

注意:这里不要直接打印它(因为数据特别长,可能会卡死)

查看一下类型

type(jing_data)


转换成 ndarray

# 转化为ndarray
jing_ndarray = np.array(jing_data.tolist())

查看形状

jing_ndarray.shape


查看类型

jing_ndarray.dtype

转化为wav: wavfile.write()

wavfile.write('经.wav', 44100, jing_ndarray.reshape(-1, 2).astype(np.int16))

转换后 4M --> 40+M


导入另一首歌 并 查看时长

love = AudioSegment.from_mp3('../data/Love Story.mp3')
love.duration_seconds

返回的是秒

切片的时候切的是音乐的时长, 单位是毫秒.
先算出两首歌的时长毫秒数

jing.duration_seconds * 1000

love.duration_seconds * 1000

裁剪(就是按毫秒切片)

# 切片的时候切的是音乐的时长, 单位是毫秒.
jing[: 20000]

剪辑合并各一半的两首歌

mix = jing[: 269609 // 2] + love[: 234527 // 2]
mix

导出 export()

mix.export('./mix.mp3')

Scipy文件输入/输出mat,wav,mp3相关推荐

  1. Scipy文件输入/输出

    Scipy文件输入/输出 随机生成数组,使用scipy中的io.savemat()保存 文件格式是.mat,标准的二进制文件 导入 import scipy.io io存储 # moon是读入的图片, ...

  2. C/C++-标准输入/输出重定向为文件输入/输出

    /*Time: 2017-02-22 11:11:15Describe: C++程序将标准输入/输出重定向为文件输入/输出. */#include <iostream> #include ...

  3. python文件输入符_python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)...

    一.变量和表达式 >>> 1 + 1 2 >>> print 'hello world' hello world >>> x = 1 >&g ...

  4. C语言基础之13:文件输入/输出

    Tips1: 函数:fopen().getc().putc().exit().fclose() fprintf().fscanf().fgets().fputs() rewind().fseek(). ...

  5. C++中的文件输入/输出(6):一些有用的函数

    tellg() --返回一个 int型数值,它表示"内置指针"的当前位置.此函数仅当你在读取一个文件时有效.例如: #include <fstream.h>       ...

  6. c++的文件输入/输出

    1文件的概述 根据文件中数据的组织形式分为: 1 文本文件 文本文件又称ASCII文件,它的每一个字节存放一个ASCII代码,代表一个字符 输出文本:接收从内存输出的数据 输出文件,向它写入数据 of ...

  7. C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案

    2019独角兽企业重金招聘Python工程师标准>>> 1.修改程序清单13.1中的程序,使之不采用命令行参数,而是请求用户输入文件名并读入用户的响应. (程序清单13.1示范了如何 ...

  8. c学习笔记 文件输入/ 输出 20210314

    与文件进行通信 文本模式和二进制模式 c提供两种访问文件的途径:二进制模式和文本模式.二进制模式下可访问文件的每个字节. MS-DOS模式下, 用\r\n表示新的一行, Ctrl+z表示文件的结束. ...

  9. 《C primer plus》——文件输入/输出

    访问文件的途径:二进制模式和文本模式 I/O级别:底层I/O和标准高级I/0 C程序自动打开的文件:标准输入(standard input)-stdin.标准输出(standard output)-s ...

最新文章

  1. 宋琦:PHP在微博优化中的“大显身手”
  2. 安装Eclipse ADT插件时遇到的问题
  3. Windows usb设备正在使用中
  4. 【Intellij IDEA系列】IDEA右键没有Git或svn处理方法
  5. SAP CRM 中间件里的发布-订阅者模式
  6. [App Store Connect帮助]八、维护您的 App(4.2)查看评分与评论
  7. 【LeetCode笔记】35. 搜索插入位置(Java、二分法)
  8. Objective-C学习笔记(一)–类
  9. Idea下springboot+easyUI的下载与集成
  10. 直接拿来用!GitHub 标星 8W,学完它就可以去 Google 面试了!
  11. 主从复制1062错误解决方法
  12. [推荐书籍]Flex 4 in Action MEAP Edition
  13. .net中对时间的操作
  14. java计算机毕业设计租车管理系统源码+mysql数据库+系统+部署+lw文档
  15. 【BP预测】基于BP神经网络实现混凝土强度预测含Matlab源码
  16. 用acdsee制作html,应用文论文写作 - - 计算机 - 计算机网络 - ACDSee的HTML相册生成...
  17. 九州8508机顶盒安装软件教程记录
  18. 书架html特效代码,原生JS写的一个书架式的图片缩放滚动展示特效代码
  19. 读高明之《帛書老子校注》
  20. 写代码赚钱的一些门路

热门文章

  1. 投石问路 IBM于12月出货GPU刀片服务器(1) - 51CTO.COM
  2. debain 安装amd显卡驱动
  3. 线上内存溢出原因排除
  4. user guide
  5. VS2017 静态链接库(.lib)的制作和调用,并对环境配置进行试验
  6. 《聊聊架构》第一部分读书笔记
  7. java jtable方法_Java中JTable如何使用?
  8. icon图标网站分享,设计师必备收藏
  9. 计算机四级考试题库 苹果,‎App Store 上的“计算机四级网络工程师考试题库”...
  10. nuget java_NuGet 使用笔记