【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()

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐