雖然AI在藝術(shù)領(lǐng)域一直有不少爭議,但它一直也沒停下各種嘗試的步伐:
寫歌、畫畫、寫詩……這不,剛又學(xué)會了填詞。
我們給這個AI放了一首鋼琴曲,曲調(diào)非常悠揚平和。
然后,它生成的部分詞是這樣的:
各位感覺如何?
其中,生成過程的動態(tài)效果看著還不錯:
當(dāng)然,它可以很好地分辨不同風(fēng)格的音樂:給安靜的鋼琴樂生成的詞與給嘈雜的搖滾樂生成的會完全不一樣。
不過,鑒于目前的填詞效果(比如有時無厘頭的上下銜接),研究人員也表示:
ps.此處在線cue周杰倫,御用詞人試試AI?
這項研究來自滑鐵盧大學(xué),研究成果即將發(fā)表在ICCC 2021。
項目的動機源于其中一位研究員的個人興趣。
這名研究員非常喜歡音樂,所以她很好奇機器是否可以生成聽起來像她最喜歡的音樂藝術(shù)家風(fēng)格的歌詞。
最終做出來的系統(tǒng)叫做LyricJam,已有在線網(wǎng)頁版供任何感興趣的音樂人訪問使用。
該系統(tǒng)通過將原始音頻文件轉(zhuǎn)換為頻譜圖,然后使用深度學(xué)習(xí)模型實時生成與音樂相匹配的歌詞。
模型的架構(gòu)由兩個變分自動編碼器(VAE)組成,一個用于學(xué)習(xí)音樂音頻的表示,另一個用于學(xué)習(xí)生成歌詞。
訓(xùn)練數(shù)據(jù)集由18000個原始歌曲的WAV音頻片段和7種音樂藝術(shù)家的相應(yīng)歌詞組成。
首先使用CNN來根據(jù)頻譜圖將帶歌詞的音頻,按風(fēng)格分類成不同“藝術(shù)家”。
然后訓(xùn)練一個條件VAE(conditional VAE,CVAE)“重建”原始歌詞,根據(jù)不同類型音樂的歌詞用詞和表達方式的不同,生成一系列連貫的新歌詞。
其中生成條件是前面預(yù)先訓(xùn)練的“藝術(shù)家”種類。
推理階段,流程差不多:系統(tǒng)將實時錄制的音頻片段轉(zhuǎn)換成頻譜圖,然后進行風(fēng)格識別,為了生成最匹配的歌詞,需要根據(jù)“藝術(shù)家”的類別從潛在空間中采樣并對其進行解碼,然后生成對應(yīng)的歌詞表達。
最后,使用基于GAN的對齊模型來對齊兩種編碼器生成的歌詞和音頻表示。
最終效果如何呢?
為了評估他們開發(fā)的系統(tǒng),研究人員進行了一項簡單的用戶研究,請來一批搞音樂創(chuàng)作的人來測試。
測試要求音樂人現(xiàn)場演奏音樂并分享他們對系統(tǒng)所作歌詞的反饋。
首先確定該系統(tǒng)是否能更準(zhǔn)確地生成與音樂所產(chǎn)生的情緒相匹配的歌詞。
研究人員選用了5種不同樂器演奏的不同歌曲的片段,每段約10秒,用該模型的兩種變體(下圖中每組的第二三行)各生成一行歌詞,再用一個基線模型(下圖中每組第一行)生成歌詞。
生成示例如下:
測試者需對以上3種詞,進行打分,選出最匹配當(dāng)前音樂的一種。
總共有15個人參與了這項研究,從下表可以看出,無論播放的歌曲類型如何,用戶都更喜歡后兩個模型的歌詞,而非基線模型的。
這說明,該系統(tǒng)可以生成匹配音樂風(fēng)格的歌詞。
最后,通過一系列問卷調(diào)查顯示,大多數(shù)參與實驗的音樂人都覺得,LyricJam是一個非批判性的即興演奏“伙伴”,可以鼓勵他們即興創(chuàng)作并嘗試不同尋常的歌詞表達方式。
另外,即使中間改變音樂風(fēng)格或嘗試加入新的和弦,歌詞也能實時做出抒情主題的變化。
最后研究人員表示,如果在更大的數(shù)據(jù)集上訓(xùn)練,填的詞就更具有多樣性了。
感興趣的朋友可戳在線鏈接試玩,系統(tǒng)操作非常簡單,錄入一個音頻就可以:https://lyricjam.ai/
論文地址:https://arxiv.org/abs/2106.01960
參考鏈接:
https://techxplore.com/news/2021-06-lyricjam-lyrics-instrumental-music.html
— 完 —
量子位 QbitAI · 頭條號簽約
關(guān)注我們,第一時間獲知前沿科技動態(tài)
取顏色:或輸入顏色值:OK或使用 HTML5: | 選擇的顏色:黑色文本陰影白色文本陰影red#ff0000rgb(255, 0, 0)hsl(0, 100%, 50%)hsv(0, 100%, 100%) | 淡 / 暗:100% #ffffff95% #ffe5e590% #ffcccc85% #ffb3b380% #ff999975% #ff808070% #ff666665% #ff4d4d60% #ff333355% #ff1a1a50% #ff000045% #e6000040% #cc000035% #b3000030% #99000025% #80000020% #66000015% #4d000010% #3300005% #1a00000% #000000 |
Hue
Hue | Hex | Rgb | Hsl | Hsv | |
0 | #ff0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) | |
15 | #ff4000 | rgb(255, 64, 0) | hsl(15, 100%, 50%) | hsv(15, 100%, 100%) | |
30 | #ff8000 | rgb(255, 128, 0) | hsl(30, 100%, 50%) | hsv(30, 100%, 100%) | |
45 | #ffbf00 | rgb(255, 191, 0) | hsl(45, 100%, 50%) | hsv(45, 100%, 100%) | |
60 | #ffff00 | rgb(255, 255, 0) | hsl(60, 100%, 50%) | hsv(60, 100%, 100%) | |
75 | #bfff00 | rgb(191, 255, 0) | hsl(75, 100%, 50%) | hsv(75, 100%, 100%) | |
90 | #80ff00 | rgb(128, 255, 0) | hsl(90, 100%, 50%) | hsv(90, 100%, 100%) | |
105 | #40ff00 | rgb(64, 255, 0) | hsl(105, 100%, 50%) | hsv(105, 100%, 100%) | |
120 | #00ff00 | rgb(0, 255, 0) | hsl(120, 100%, 50%) | hsv(120, 100%, 100%) | |
135 | #00ff40 | rgb(0, 255, 64) | hsl(135, 100%, 50%) | hsv(135, 100%, 100%) | |
150 | #00ff80 | rgb(0, 255, 128) | hsl(150, 100%, 50%) | hsv(150, 100%, 100%) | |
165 | #00ffbf | rgb(0, 255, 191) | hsl(165, 100%, 50%) | hsv(165, 100%, 100%) | |
180 | #00ffff | rgb(0, 255, 255) | hsl(180, 100%, 50%) | hsv(180, 100%, 100%) | |
195 | #00bfff | rgb(0, 191, 255) | hsl(195, 100%, 50%) | hsv(195, 100%, 100%) | |
210 | #007fff | rgb(0, 127, 255) | hsl(210, 100%, 50%) | hsv(210, 100%, 100%) | |
225 | #0040ff | rgb(0, 64, 255) | hsl(225, 100%, 50%) | hsv(225, 100%, 100%) | |
240 | #0000ff | rgb(0, 0, 255) | hsl(240, 100%, 50%) | hsv(240, 100%, 100%) | |
255 | #4000ff | rgb(64, 0, 255) | hsl(255, 100%, 50%) | hsv(255, 100%, 100%) | |
270 | #7f00ff | rgb(127, 0, 255) | hsl(270, 100%, 50%) | hsv(270, 100%, 100%) | |
285 | #bf00ff | rgb(191, 0, 255) | hsl(285, 100%, 50%) | hsv(285, 100%, 100%) | |
300 | #ff00ff | rgb(255, 0, 255) | hsl(300, 100%, 50%) | hsv(300, 100%, 100%) | |
315 | #ff00bf | rgb(255, 0, 191) | hsl(315, 100%, 50%) | hsv(315, 100%, 100%) | |
330 | #ff0080 | rgb(255, 0, 128) | hsl(330, 100%, 50%) | hsv(330, 100%, 100%) | |
345 | #ff0040 | rgb(255, 0, 64) | hsl(345, 100%, 50%) | hsv(345, 100%, 100%) | |
360 | #ff0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) |
HSL Saturation
Sat | Hex | Rgb | Hsl | Hsv | |
100% | #ff0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) | |
95% | #f90606 | rgb(249, 6, 6) | hsl(0, 95%, 50%) | hsv(0, 97%, 98%) | |
90% | #f20d0d | rgb(242, 13, 13) | hsl(0, 90%, 50%) | hsv(0, 95%, 95%) | |
85% | #ec1313 | rgb(236, 19, 19) | hsl(0, 85%, 50%) | hsv(0, 92%, 93%) | |
80% | #e61919 | rgb(230, 25, 25) | hsl(0, 80%, 50%) | hsv(0, 89%, 90%) | |
75% | #df2020 | rgb(223, 32, 32) | hsl(0, 75%, 50%) | hsv(0, 86%, 88%) | |
70% | #d92626 | rgb(217, 38, 38) | hsl(0, 70%, 50%) | hsv(0, 82%, 85%) | |
65% | #d22d2d | rgb(210, 45, 45) | hsl(0, 65%, 50%) | hsv(0, 79%, 83%) | |
60% | #cc3333 | rgb(204, 51, 51) | hsl(0, 60%, 50%) | hsv(0, 75%, 80%) | |
55% | #c63939 | rgb(198, 57, 57) | hsl(0, 55%, 50%) | hsv(0, 71%, 78%) | |
50% | #bf4040 | rgb(191, 64, 64) | hsl(0, 50%, 50%) | hsv(0, 67%, 75%) | |
45% | #b94646 | rgb(185, 70, 70) | hsl(0, 45%, 50%) | hsv(0, 62%, 73%) | |
40% | #b34d4d | rgb(179, 77, 77) | hsl(0, 40%, 50%) | hsv(0, 57%, 70%) | |
35% | #ac5353 | rgb(172, 83, 83) | hsl(0, 35%, 50%) | hsv(0, 52%, 68%) | |
30% | #a65959 | rgb(166, 89, 89) | hsl(0, 30%, 50%) | hsv(0, 46%, 65%) | |
25% | #9f6060 | rgb(159, 96, 96) | hsl(0, 25%, 50%) | hsv(0, 40%, 63%) | |
20% | #996666 | rgb(153, 102, 102) | hsl(0, 20%, 50%) | hsv(0, 33%, 60%) | |
15% | #936c6c | rgb(147, 108, 108) | hsl(0, 15%, 50%) | hsv(0, 26%, 58%) | |
10% | #8c7373 | rgb(140, 115, 115) | hsl(0, 10%, 50%) | hsv(0, 18%, 55%) | |
5% | #867979 | rgb(134, 121, 121) | hsl(0, 5%, 50%) | hsv(0, 10%, 53%) | |
0% | #808080 | rgb(128, 128, 128) | hsl(0, 0%, 50%) | hsv(0, 0%, 50%) |
HSL 淡 / 暗
Lum | Hex | Rgb | Hsl | Hsv | |
100% | #ffffff | rgb(255, 255, 255) | hsl(0, 0%, 100%) | hsv(0, 0%, 100%) | |
95% | #ffe5e5 | rgb(255, 229, 229) | hsl(0, 100%, 95%) | hsv(0, 10%, 100%) | |
90% | #ffcccc | rgb(255, 204, 204) | hsl(0, 100%, 90%) | hsv(0, 20%, 100%) | |
85% | #ffb3b3 | rgb(255, 179, 179) | hsl(0, 100%, 85%) | hsv(0, 30%, 100%) | |
80% | #ff9999 | rgb(255, 153, 153) | hsl(0, 100%, 80%) | hsv(0, 40%, 100%) | |
75% | #ff8080 | rgb(255, 128, 128) | hsl(0, 100%, 75%) | hsv(0, 50%, 100%) | |
70% | #ff6666 | rgb(255, 102, 102) | hsl(0, 100%, 70%) | hsv(0, 60%, 100%) | |
65% | #ff4d4d | rgb(255, 77, 77) | hsl(0, 100%, 65%) | hsv(0, 70%, 100%) | |
60% | #ff3333 | rgb(255, 51, 51) | hsl(0, 100%, 60%) | hsv(0, 80%, 100%) | |
55% | #ff1a1a | rgb(255, 26, 26) | hsl(0, 100%, 55%) | hsv(0, 90%, 100%) | |
50% | #ff0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) | |
45% | #e60000 | rgb(230, 0, 0) | hsl(0, 100%, 45%) | hsv(0, 100%, 90%) | |
40% | #cc0000 | rgb(204, 0, 0) | hsl(0, 100%, 40%) | hsv(0, 100%, 80%) | |
35% | #b30000 | rgb(179, 0, 0) | hsl(0, 100%, 35%) | hsv(0, 100%, 70%) | |
30% | #990000 | rgb(153, 0, 0) | hsl(0, 100%, 30%) | hsv(0, 100%, 60%) | |
25% | #800000 | rgb(128, 0, 0) | hsl(0, 100%, 25%) | hsv(0, 100%, 50%) | |
20% | #660000 | rgb(102, 0, 0) | hsl(0, 100%, 20%) | hsv(0, 100%, 40%) | |
15% | #4d0000 | rgb(77, 0, 0) | hsl(0, 100%, 15%) | hsv(0, 100%, 30%) | |
10% | #330000 | rgb(51, 0, 0) | hsl(0, 100%, 10%) | hsv(0, 100%, 20%) | |
5% | #1a0000 | rgb(26, 0, 0) | hsl(0, 100%, 5%) | hsv(0, 100%, 10%) | |
0% | #000000 | rgb(0, 0, 0) | hsl(0, 0%, 0%) | hsv(0, 0%, 0%) |
HSV Saturation
Sat | Hex | Rgb | Hsl | Hsv | |
100% | #ff0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) | |
95% | #ff0d0d | rgb(255, 13, 13) | hsl(0, 100%, 53%) | hsv(0, 95%, 100%) | |
90% | #ff1919 | rgb(255, 25, 25) | hsl(0, 100%, 55%) | hsv(0, 90%, 100%) | |
85% | #ff2626 | rgb(255, 38, 38) | hsl(0, 100%, 57%) | hsv(0, 85%, 100%) | |
80% | #ff3333 | rgb(255, 51, 51) | hsl(0, 100%, 60%) | hsv(0, 80%, 100%) | |
75% | #ff4040 | rgb(255, 64, 64) | hsl(0, 100%, 63%) | hsv(0, 75%, 100%) | |
70% | #ff4d4d | rgb(255, 77, 77) | hsl(0, 100%, 65%) | hsv(0, 70%, 100%) | |
65% | #ff5959 | rgb(255, 89, 89) | hsl(0, 100%, 68%) | hsv(0, 65%, 100%) | |
60% | #ff6666 | rgb(255, 102, 102) | hsl(0, 100%, 70%) | hsv(0, 60%, 100%) | |
55% | #ff7373 | rgb(255, 115, 115) | hsl(0, 100%, 73%) | hsv(0, 55%, 100%) | |
50% | #ff8080 | rgb(255, 128, 128) | hsl(0, 100%, 75%) | hsv(0, 50%, 100%) | |
45% | #ff8c8c | rgb(255, 140, 140) | hsl(0, 100%, 78%) | hsv(0, 45%, 100%) | |
40% | #ff9999 | rgb(255, 153, 153) | hsl(0, 100%, 80%) | hsv(0, 40%, 100%) | |
35% | #ffa6a6 | rgb(255, 166, 166) | hsl(0, 100%, 83%) | hsv(0, 35%, 100%) | |
30% | #ffb3b3 | rgb(255, 179, 179) | hsl(0, 100%, 85%) | hsv(0, 30%, 100%) | |
25% | #ffbfbf | rgb(255, 191, 191) | hsl(0, 100%, 88%) | hsv(0, 25%, 100%) | |
20% | #ffcccc | rgb(255, 204, 204) | hsl(0, 100%, 90%) | hsv(0, 20%, 100%) | |
15% | #ffd9d9 | rgb(255, 217, 217) | hsl(0, 100%, 93%) | hsv(0, 15%, 100%) | |
10% | #ffe6e6 | rgb(255, 230, 230) | hsl(0, 100%, 95%) | hsv(0, 10%, 100%) | |
5% | #fff2f2 | rgb(255, 242, 242) | hsl(0, 100%, 98%) | hsv(0, 5%, 100%) | |
0% | #ffffff | rgb(255, 255, 255) | hsl(0, 0%, 100%) | hsv(0, 0%, 100%) |
HSV 亮 / 暗
Value | Hex | Rgb | Hsl | Hsv | |
100% | #ff0000 | rgb(255, 0, 0) | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) | |
95% | #f20000 | rgb(242, 0, 0) | hsl(0, 100%, 48%) | hsv(0, 100%, 95%) | |
90% | #e60000 | rgb(230, 0, 0) | hsl(0, 100%, 45%) | hsv(0, 100%, 90%) | |
85% | #d90000 | rgb(217, 0, 0) | hsl(0, 100%, 43%) | hsv(0, 100%, 85%) | |
80% | #cc0000 | rgb(204, 0, 0) | hsl(0, 100%, 40%) | hsv(0, 100%, 80%) | |
75% | #bf0000 | rgb(191, 0, 0) | hsl(0, 100%, 38%) | hsv(0, 100%, 75%) | |
70% | #b30000 | rgb(179, 0, 0) | hsl(0, 100%, 35%) | hsv(0, 100%, 70%) | |
65% | #a60000 | rgb(166, 0, 0) | hsl(0, 100%, 33%) | hsv(0, 100%, 65%) | |
60% | #990000 | rgb(153, 0, 0) | hsl(0, 100%, 30%) | hsv(0, 100%, 60%) | |
55% | #8c0000 | rgb(140, 0, 0) | hsl(0, 100%, 28%) | hsv(0, 100%, 55%) | |
50% | #800000 | rgb(128, 0, 0) | hsl(0, 100%, 25%) | hsv(0, 100%, 50%) | |
45% | #730000 | rgb(115, 0, 0) | hsl(0, 100%, 23%) | hsv(0, 100%, 45%) | |
40% | #660000 | rgb(102, 0, 0) | hsl(0, 100%, 20%) | hsv(0, 100%, 40%) | |
35% | #590000 | rgb(89, 0, 0) | hsl(0, 100%, 18%) | hsv(0, 100%, 35%) | |
30% | #4d0000 | rgb(77, 0, 0) | hsl(0, 100%, 15%) | hsv(0, 100%, 30%) | |
25% | #400000 | rgb(64, 0, 0) | hsl(0, 100%, 13%) | hsv(0, 100%, 25%) | |
20% | #330000 | rgb(51, 0, 0) | hsl(0, 100%, 10%) | hsv(0, 100%, 20%) | |
15% | #260000 | rgb(38, 0, 0) | hsl(0, 100%, 8%) | hsv(0, 100%, 15%) | |
10% | #1a0000 | rgb(26, 0, 0) | hsl(0, 100%, 5%) | hsv(0, 100%, 10%) | |
5% | #0d0000 | rgb(13, 0, 0) | hsl(0, 100%, 3%) | hsv(0, 100%, 5%) | |
0% | #000000 | rgb(0, 0, 0) | hsl(0, 0%, 0%) | hsv(0, 0%, 0%) |
RGB (Red, Green, Blue)
Red | Green | Blue |
---|---|---|
255 | 0 | 0 |
rgb(255, 0, 0) #ff0000
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
、背景:
為了實現(xiàn)抓取某目標(biāo)網(wǎng)站的歌曲以及作者,通過python + Xpath方式實現(xiàn),并將抓取的結(jié)果保存到csv格式的excel表格里。
2、實現(xiàn)步驟:
(1)獲取該網(wǎng)站的網(wǎng)頁源碼
(2)使用Xpath方式進行解析,找到要抓取的歌曲和作者所在的段落
(3)將解析后的結(jié)果寫入到CSV格式的excel中
3、關(guān)鍵技術(shù):
python、requests、Xpath、csv文件寫入
4、代碼實現(xiàn):
# ############## 通過python+Xpath實現(xiàn)抓取某網(wǎng)站推薦的歌曲
import requests
import lxml.html
import csv
url="http://www.show160.com/"
html=requests.get(url=url)
htmlContent=html.content.decode("GBK")
selector=lxml.html.fromstring(htmlContent)
#先抓大,找到歌曲信息所在的片段
item_list=selector.xpath('//*[@id="music_con1_1"]/div[@class="cont"]/div[@class="music_list"]/ul/li')
songAndAuthorList=[]
#基于抓取的結(jié)果再抓取每個li下面的信息,包括歌曲名和作者
for item in item_list:
name=item.xpath('div[@class="lebox"]/a/text()')
author=item.xpath('div[@class="ribox"]/a/text()')
itemDict={"name":name[0],
"author":author[0]}
songAndAuthorList.append(itemDict)
#將結(jié)果存入到excel表格里
with open('songAndAuthor.csv', 'w', encoding='utf-8-sig', newline='') as f:
writer=csv.DictWriter(f, fieldnames=['name','author'])
writer.writeheader()
writer.writerows(songAndAuthorList)
5、代碼解析:
下面是源碼的截圖,
為了看的更清楚一點,將要抓取的結(jié)構(gòu)羅列如下:
6、代碼運行結(jié)果:
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。