口琴被稱(chēng)為“口袋里的鋼琴”,便于攜帶,具有獨(dú)特的音色。我在機(jī)緣巧合之下喜歡上了吹口琴,并發(fā)現(xiàn)了je口琴吧。je口琴吧的成員主要是二次元口琴音樂(lè)的愛(ài)好者,大家普遍使用半音階口琴。一只十二孔半音階口琴具有三組的八度和完全的半音。用一只口琴就能演奏絕大部分的動(dòng)漫歌曲。我目前所用的就是一把16孔的半音階口琴——SCX64。有的小伙伴會(huì)把自己喜歡的譜子扒下來(lái),上傳到貼吧。但是由于貼吧的機(jī)制,并不適合譜子的保存和搜索。要想從大量水貼中找到自己想要譜子真可謂是難上加難。 在一次偶然的機(jī)會(huì),我讀了一篇利用github的issue來(lái)儲(chǔ)存技術(shù)博客的文章。其作者詳細(xì)闡述了這么做的優(yōu)點(diǎn)。如:能夠在線(xiàn)編輯和預(yù)覽、支持粘貼屏幕截圖和拖拽添加圖片、帶有搜索和排序功能、可通過(guò) Label 來(lái)對(duì)進(jìn)行分類(lèi)。我當(dāng)時(shí)就激動(dòng)的叫了出來(lái)!天!這些功能簡(jiǎn)直就像是為曲庫(kù)量身打造的! issue有自己的Label系統(tǒng),能夠?qū)ψV曲按照首字母等標(biāo)簽進(jìn)行分類(lèi),方便查找 曲庫(kù)建立之初,我進(jìn)行了不少探索。自己用markdown寫(xiě)了一套譜子上傳模板。然后自己一個(gè)人開(kāi)始搬運(yùn)je吧一些比較有名的譜樓和自由神社的譜子。為了推廣我的曲庫(kù),我用vue框架做了兩個(gè)網(wǎng)站,一個(gè)是pc端的,一個(gè)是自適應(yīng)的。我還制作了詳細(xì)的譜子上傳教程發(fā)到j(luò)e吧。這樣,我的曲庫(kù)終于有了第一批用戶(hù),同時(shí)也是第一批譜子上傳者。在后來(lái)一段時(shí)間里,隨著譜子數(shù)量的增多,一些問(wèn)題逐漸暴露出來(lái),經(jīng)過(guò)大家的討論,曲庫(kù)2.0版本應(yīng)運(yùn)而生。 在2.0版本中,我們對(duì)曲庫(kù)定位為一個(gè)單純的數(shù)據(jù)庫(kù),去除了譜子模板中僅僅為了美觀(guān)加入的徽章代碼。同時(shí),我們對(duì)曲庫(kù)進(jìn)行了去標(biāo)簽化。不再使用github issue的label標(biāo)簽功能對(duì)譜子進(jìn)行分類(lèi)。在1.0版本中,我們將同一個(gè)作品的譜子放在一個(gè)issue里面,隨著譜子數(shù)量的增加,用戶(hù)找譜子的體驗(yàn)嚴(yán)重下降。為此我們?cè)?.0中將每個(gè)譜子作為一個(gè)單獨(dú)的issue進(jìn)行存放,不再?gòu)?qiáng)迫用作品將其分類(lèi)。同時(shí),我們我還成立了核心開(kāi)發(fā)組,著手移動(dòng)端和網(wǎng)站新版本的開(kāi)發(fā)。 1月份,我們順利開(kāi)發(fā)了嗶譜嗶譜網(wǎng)站以及安卓客戶(hù)端。網(wǎng)站新功能中的譜冊(cè)功能也是對(duì)之前曲庫(kù)2.0中去標(biāo)簽化的一種延續(xù)。我們把將譜子分類(lèi)的權(quán)利交給用戶(hù),讓用戶(hù)能夠創(chuàng)建一些獨(dú)一無(wú)二的譜冊(cè)。就有點(diǎn)類(lèi)似于網(wǎng)易云音樂(lè)的歌單。個(gè)性化,定制化。這也是我們開(kāi)發(fā)譜冊(cè)功能的初衷。 關(guān)于嗶譜嗶譜的技術(shù)棧,我們選擇的是JavaScript語(yǔ)言的vue框架,后端選擇的是go語(yǔ)言的gin框架,數(shù)據(jù)庫(kù)mysql,服務(wù)器選的是阿里云。 目前前端主流的框架有,F(xiàn)acebook的react.js,國(guó)人尤雨奚開(kāi)發(fā)的vue.js,還有Google維護(hù)的angular.js。之所以選擇vue,是因?yàn)関ue是一款很輕量的漸進(jìn)式框架,有著詳細(xì)中文文檔和社區(qū)。為什么選擇go語(yǔ)言作為后端而不是Java或者node.js呢?當(dāng)然不是因?yàn)榻衲晔枪纺。主要是因(yàn)楹诵拈_(kāi)發(fā)組中后端的成員公司新業(yè)務(wù)開(kāi)始使用go,而這個(gè)語(yǔ)言確實(shí)好,它對(duì)于高并發(fā)具有先天的優(yōu)勢(shì),同時(shí)自帶垃圾回收機(jī)制,能夠快速編譯。因?yàn)槲覀冞@個(gè)項(xiàng)目是一個(gè)開(kāi)源的項(xiàng)目,大家都是基于興趣來(lái)進(jìn)行網(wǎng)站開(kāi)發(fā),我們暫時(shí)無(wú)法給予大家經(jīng)濟(jì)上的回報(bào),所以我們只能說(shuō)在項(xiàng)目中多多使用一些比較新的東西,鼓勵(lì)大家學(xué)習(xí)一些新的語(yǔ)言,給大家一些鍛煉和實(shí)踐的機(jī)會(huì)。 上圖中這些一個(gè)個(gè)小的知識(shí)點(diǎn),像跨域,nginx配置,數(shù)據(jù)庫(kù)和接口設(shè)計(jì),移動(dòng)端的開(kāi)發(fā)也都是我們?cè)诰W(wǎng)站開(kāi)發(fā)過(guò)程中實(shí)際遇到的問(wèn)題,不過(guò)都通過(guò)查閱相關(guān)資料或者和開(kāi)發(fā)組的各位相互請(qǐng)教最終順利解決。特別是第三方登錄的實(shí)現(xiàn)讓我對(duì)前后端分離后相互之間的配合有了更加深刻的理解。 截至今年3月份,曲庫(kù)現(xiàn)有譜子數(shù)量已經(jīng)達(dá)到了490個(gè),相比于最初的39首有了巨大的進(jìn)步。同時(shí)越來(lái)越多的搬運(yùn)工加入了我們,截至到目前為止,除了我以外,還有10名曲庫(kù)的元老級(jí)貢獻(xiàn)者持續(xù)為曲庫(kù)義務(wù)上傳譜子。同時(shí),我每個(gè)月我們都會(huì)收集大家對(duì)我們曲庫(kù)的建議以及奇思妙想,并且通過(guò)討論決定是否添加或修改相應(yīng)的功能。另外,觀(guān)實(shí)科技目前以股份的形式投入經(jīng)費(fèi)用來(lái)維持網(wǎng)站服務(wù)器的正常運(yùn)行。 這其實(shí)也是我第一次在Github上自己負(fù)責(zé)一個(gè)開(kāi)源項(xiàng)目。讓我感受最深的就是開(kāi)源貢獻(xiàn)者之間不一樣的合作。為什么說(shuō)是不一樣的團(tuán)隊(duì)合作呢?因?yàn)槭紫任覀兪且粋(gè)開(kāi)源項(xiàng)目,是非盈利的。大家都是處于對(duì)口琴的熱愛(ài)才參與到這個(gè)項(xiàng)目當(dāng)中來(lái)。項(xiàng)目成員的背景多元,所以思路和點(diǎn)子也很多元。其中有初中生,大學(xué)生,也有華為,新浪等各個(gè)公司的員工。大家平時(shí)都有自己的事要做,不可能在這個(gè)項(xiàng)目上花太多時(shí)間。所以我就要負(fù)責(zé)協(xié)調(diào),還有進(jìn)度管理(催進(jìn)度)。 魯迅說(shuō),不對(duì)。。。古人說(shuō):凡事預(yù)則立,不預(yù)則廢。我發(fā)現(xiàn)真的就是這樣。所以必須要定一個(gè)網(wǎng)站施工計(jì)劃表,這樣才能相對(duì)有效提高網(wǎng)站開(kāi)發(fā)的進(jìn)度。同時(shí)這個(gè)項(xiàng)目也讓我有機(jī)會(huì)接觸網(wǎng)站開(kāi)發(fā)的全過(guò)程,讓我知道了前端和后端之間是如何配合來(lái)實(shí)現(xiàn)一些業(yè)務(wù)的,充分滿(mǎn)足了我的好奇心。 因?yàn)楸究飘呍O(shè)做過(guò)一個(gè)基于融合特征的行人再識(shí)別問(wèn)題,其中用到了幾個(gè)公共行人數(shù)據(jù)集。于是我就想,能否將我們曲庫(kù)也作為某個(gè)機(jī)器學(xué)習(xí)的數(shù)據(jù)集呢? 目前貼吧的小伙伴們主要都是靠自己的耳朵或者用一些輔助軟件將音頻轉(zhuǎn)換成頻譜來(lái)進(jìn)行扒譜,這樣需要花費(fèi)不少精力。我們是否能夠研究出一款輸入為音頻文件,輸出為譜子的機(jī)器學(xué)習(xí)算法呢? 我閱讀了幾篇國(guó)外關(guān)于樂(lè)譜識(shí)別的論文,其中有一篇就是將音頻文件進(jìn)行Constant Q transform常數(shù)Q轉(zhuǎn)換。從而將音樂(lè)中的音符檢測(cè)轉(zhuǎn)換為圖像識(shí)別問(wèn)題,然后通過(guò)cnn網(wǎng)絡(luò)訓(xùn)練樣本。但是識(shí)別率不太理想,相關(guān)研究還有很大空白。 常數(shù)Q轉(zhuǎn)換(ConstantQtransform)與短時(shí)傅立葉轉(zhuǎn)換一樣為重要時(shí)頻分析工具,這個(gè)轉(zhuǎn)換產(chǎn)生的頻譜最大的特色是在頻率軸為對(duì)數(shù)標(biāo)度而不是線(xiàn)性標(biāo)度,且窗口長(zhǎng)度會(huì)隨著頻率而改變。由于它與音階頻率具有相同的指數(shù)分布規(guī)律,因此在音樂(lè)信號(hào)的音調(diào)檢測(cè)中有著獨(dú)特的優(yōu)勢(shì)。但是目前CQT存在的一些問(wèn)題:無(wú)非常有效的CQT快速算法,如果借助fft來(lái)進(jìn)行計(jì)算則會(huì)喪失一部分cqt變換獨(dú)有的性質(zhì)。 值得一提的是,je吧常用的數(shù)字譜并沒(méi)有標(biāo)出節(jié)奏(這造成了一定的不便,但也造就了這樣的簡(jiǎn)譜非常便于搬運(yùn)和轉(zhuǎn)調(diào)的優(yōu)勢(shì))相比于五線(xiàn)譜和簡(jiǎn)譜,數(shù)字譜數(shù)據(jù)更容易處理。所以我覺(jué)得對(duì)于樂(lè)譜識(shí)別的研究來(lái)說(shuō),數(shù)字譜可能會(huì)是一個(gè)很好的切入點(diǎn)。 通過(guò)和平安科技深度學(xué)習(xí)組的專(zhuān)家交流,目前直接提取準(zhǔn)確的數(shù)字譜還有難度。但是他提供了另一種思路,可以先研究一種能夠提取一段音樂(lè)中的主旋律的算法,這樣就算再用耳朵扒譜也容易得多。同時(shí),這個(gè)算法也可以作為樂(lè)譜識(shí)別算法中的音頻預(yù)處理,提高準(zhǔn)確率。 因?yàn)檠芯可A段也會(huì)從事圖像檢測(cè)和大數(shù)據(jù)方向相關(guān)研究,所以我覺(jué)得或許可以將以后的職業(yè)和興趣結(jié)合一下。于是,我提出了一個(gè)大膽的,以曲庫(kù)為核心的嗶譜嗶譜小生態(tài)。一來(lái),希望能夠充分發(fā)揮曲庫(kù)的價(jià)值,看能否為機(jī)器學(xué)習(xí)領(lǐng)域的發(fā)展做一些貢獻(xiàn)。二來(lái),看看自己有沒(méi)有能力在樂(lè)譜識(shí)別的研究方面有所突破。 我們也和許多人氣UP主達(dá)成合作,為嗶譜嗶譜引入了許多優(yōu)秀的口琴相關(guān)內(nèi)容。 當(dāng)然這個(gè)生態(tài)圈,目前還只是不成熟的設(shè)想。希望能通過(guò)大家后續(xù)的共同完善與修改,把最好的口琴曲譜庫(kù)送給最好的你們! 其實(shí)寫(xiě)之前糾結(jié)了一下到底在什么平臺(tái)上寫(xiě)這篇文章比較合適?知乎?掘金?還是簡(jiǎn)書(shū)? 所以趁機(jī)打一波廣告:不管你是口琴、二次元音樂(lè)的愛(ài)好者,還是對(duì)前后端或ML感興趣的程序猿,亦或是對(duì)我們很感興趣,我們JE曲譜庫(kù)核心組這個(gè)大家庭都?xì)g迎您的加入!群內(nèi)技術(shù)交流氛圍良好,希望大家多多參與討論。在把嗶譜嗶譜做好的同時(shí),也希望群里的每個(gè)人都能有所收獲! |
關(guān)于我們|吹牛吉他網(wǎng) ( 蜀ICP備19038617號(hào)-2 )
GMT+8, 2024-4-26 14:56
Powered by Discuz! X3.4
© 2010-2018 www.wcnp.cn