【Educoder作业】认识数字音频_educoder数字音频-儿歌配乐-程序员宅基地

技术标签: Educoder作业  python  音频  开发语言  

【Educoder作业】认识数字音频

T1 认识数字音频

他这个问题在于, p r i n t print print在格式化输出的时候需要注意, % \% %是要求加括号的,不然会报错。

########## Begin ##########
from pydub import AudioSegment as AS
s = AS.from_file('src/step1/record.mp3', format = 'mp3')
print('时长:%.1f秒' % (len(s) / 1000))
print('采样频率:%.1fkHz' % (s.frame_rate / 1000))
print('量化位数:%d比特' % (s.sample_width * 8))
print('声道数:%d' % (s.channels))
########## End ##########

T2 剪辑儿歌

m p 3 mp3 mp3文件可以像数组一样,直接相加表示拼接,用中括号取值是以毫秒为单位裁剪。

########## Begin ##########
from pydub import AudioSegment as AS
song = AS.from_file('src/step2/source/record.mp3', format = 'mp3')
song = song[4000 : 8500] + song[10000 : 14500]
Fl = song.export('src/step2/student/song.mp3', format = 'mp3')
Fl.close()
########## End ##########

T3 根据简谱生成配乐

首先,生成基础音的过程显然可以通过循环来实现,内容是简单的。
剩下的就是常规的拼接了。

from pydub import AudioSegment as AS
duoRuiMi = [ ]    #存放音符发音数据
########## Begin ##########
#构建列表duoRuiMi,第i号元素存放i.mp3的数据
pre = 'src/step3/source/'
for i in range(8) :
    mdl = str(i) + '.mp3'
    duoRuiMi.append(AS.from_file(pre + mdl, format = 'mp3'))
########## End ##########
notation = '012311231034503450' #简谱
music = AS.empty() #存放生成的配乐,最开始设置为空(原因与定义空列表、空字符串类似)
########## Begin ##########
#根据简谱生成music,如简谱1231是依次将duoRuiMi的第1、2、3、1号元素拼接到music最后
for i in notation :
    music = music + duoRuiMi[int(i)]
########## End ##########
file = music.export('src/step3/student/music.mp3', format='mp3')
file.close()

T4 合并儿歌与配乐

没啥难度,让干啥就干啥。
不过这个题有一个问题,就是虽然题目里说儿歌和配乐分别左右声道都相等,但是需要按照题目的要求来搭配。比如儿歌的左声道加上配乐的右声道是不对的,暂时不知道为啥。

from pydub import AudioSegment as AS
song = AS.from_file('src/step4/source/song.mp3', format='mp3')
music = AS.from_file('src/step4/source/music.mp3', format='mp3')
########## Begin ##########
music = music + 8
music = music[180 : 9180]
Ls = song.split_to_mono()
Lm = music.split_to_mono()
twoTigers = AS.from_mono_audiosegments(Ls[0], Lm[0])
########## End ##########
file = twoTigers.export('src/step4/student/twoTigers.mp3', format='mp3')
file.close()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/JZYshuraK/article/details/125370916

智能推荐

自定义转盘-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏2次。开年第一篇,写了一个自定义的转盘,目前有两种模式,具体的效果如下: 模式一:指针模式 当转盘转动停下下后,可以获取到当前处于初始位置的数据如下图所示就是初始状态,0所在的就是初始位置(在坐标系中,就是Y轴的上半轴),这里以这张图来具体分析,每个item所占比例为 60度,所以这个初始区域的范围就是【-30,30】,如果全部转成正数,可以理解成从圆的330度-30度。这个模式下,显示的是当前包含Y

MybatisPlusException: Error: Cannot execute table Method, ClassGenricType not found-程序员宅基地

文章浏览阅读9.1k次。错误介绍:使用mp的IService CRUD接口报错如下:com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Cannot execute table Method, ClassGenricType not found项目背景:项目集成Mybatis-plus(以下简称mp)之后,想要批量插入..._error: cannot execute table method, classgenrictype not found .

JVM性能优化 —— 类加载器,手动实现类的热加载_拓展类加载器-程序员宅基地

文章浏览阅读573次,点赞21次,收藏20次。双亲委派模式是在Java 1.2后引入的,其工作原理的是,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式,即每个儿子都很懒,每次有活就丢给父亲去干,直到父亲说这件事我也干不了时,儿子自己想办法去完成,这不就是传说中的实力坑爹啊?_拓展类加载器

Angular_树形控件_ng-zorro nz-tree 修改节点名称-程序员宅基地

文章浏览阅读5.9k次。Tree树形控件何时使用#文件夹、组织架构、生物分类、国家地区等等,世间万物的大多数结构都是树形结构。使用树控件可以完整展现其中的层级关系,并具有展开收起选择等交互功能。代码演示root1child1child1.1child1.2child2root2root3基本最简单的用法,展示可勾选,可选中,禁用,默认展开等功能。root1root2child2.1ch..._ng-zorro nz-tree 修改节点名称

PHP微信公众平台开发-BAE-视频+笔记+源码_微信公众号开发号码簿-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏10次。2018年8月24日,沉迷于学习微信公众号开发。本篇文章是传智播客课程“PHP微信公众平台开发”前十二节课的课程笔记。课程的视频链接http://yun.itheima.com/course/163.html ,视频可免费下载,我觉得老师讲得挺好的,采用的是百度云BAE。同时,推荐方倍工作室的博客园(微信公众平台开发入门教程),采用新浪云SAE。本课程笔记和源码可供下载:https://d..._微信公众号开发号码簿

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

随便推点

Python Django 版本对应表以及Mysql对应版本_django版本和mysql对应关系-程序员宅基地

文章浏览阅读6.1k次。1.Python和Django 版本对应关系图Django versionPython versions1.82.7,3.2(until the end of 2016),3.3,3.4,3.51.9,1.102.7,3.4,3.51.112.7,3.4,3.5,3.6, 3.7 (added in 1.11.17)2.03.4,3.5,3.6..._django版本和mysql对应关系

Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构_pom <packaging>-程序员宅基地

文章浏览阅读4.1w次,点赞19次,收藏27次。1. packagingpackaging给出了项目的打包类型,即作为项目的发布形式,其可能的类型。在Maven 3中,其可用的打包类型如下:jar,默认类型warejbearrarparpommaven-plugin2.multi-modulesMaven 3支持Maven项目的多模块(multi-modules)结构。这样的Maven项目也被称为聚合项目,通常由一个_pom

Composer 原理(二) -- 小丑_composer repositories-程序员宅基地

文章浏览阅读194次。Composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的.对于使用者来说Composer非常的简单,通过简单的一条命令将需要的代码包下载到vendor目录下,然后开发者就可以引入包并使用了.其中的关键在于你项目定义的composer.json,可以定义项目需要依赖的包(可能有多个),而依赖的包可能又依赖其他的包(这就是组件..._composer repositories

W5500+F4官网TCPClient代码出现IP读取有问题,乱码问题_w5500 ping 网络助手 乱码 send(sock_tcps,tcp_server_buff,-程序员宅基地

文章浏览阅读756次。1.开发板:STM32F407;2.STM32F407+W5500代码:3.出现的问题:(1)串口助手打印出来的IP、网关地址等与自设的静态IP、网关等不匹配;(2)网络数据收发为乱码;4.解决方法出现这些现象都是源于一个问题,SPI的时序设置有问题。我这里是速度过快,所以将SPI_BaudRatePrescaler_2改为SPI_BaudRatePrescaler_8后以上问题均解决。..._w5500 ping 网络助手 乱码 send(sock_tcps,tcp_server_buff,len);

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

推荐文章

热门文章

相关标签