热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Scipy文件输入输出mat,wav,mp3moon(df)降噪后的moon_cleaned(df)导入:importscipy.io
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')

在这里插入图片描述


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
author-avatar
Gbom2402851125
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有