【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 根据简谱生成配乐
首先,生成基础音的过程显然可以通过循环来实现,内容是简单的。
剩下的就是常规的拼接了。文章来源:https://www.toymoban.com/news/detail-767711.html
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 合并儿歌与配乐
没啥难度,让干啥就干啥。
不过这个题有一个问题,就是虽然题目里说儿歌和配乐分别左右声道都相等,但是需要按照题目的要求来搭配。比如儿歌的左声道加上配乐的右声道是不对的,暂时不知道为啥。文章来源地址https://www.toymoban.com/news/detail-767711.html
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()
到了这里,关于【Educoder作业】认识数字音频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!