去年的這個時候我在博客園開通了技術博客。一晃一年過去了,這一年中我寫了二十幾篇原創,全是對音頻開發中的知識和經驗的總結。不高產,差很少一個月兩篇的節奏。平時工做比較忙,基本都是利用週末時間寫出來的。中途有一段時間特別忙,差點想放棄,慶幸仍是堅持下來了。我想後面還會堅持下去,內容仍是對我工做中知識和經驗的總結。人們一般喜歡在一週年之際作一些總結,我也不例外,今天我來總結一下過去的一年在技術上我作了什麼。總結下來主要作了三件事:音頻開發、人工智能(AI) 學習、寫技術博客。html
1,音頻開發算法
音頻軟件開發是個人本職工做,這一年中的絕大多數時間確定是獻給她了,畢竟她是個人衣食父母,我養家餬口得靠她呀。本職工做不只要花絕大多數時間作,並且還要作好。去年這個時候我從APP語音開發切到Android手機平臺上的音頻軟件開發,主要是在音頻DSP上開發音頻軟件。那時我對手機平臺不熟,對Android系統不熟,對DSP不熟,有不少新東西要學,也曾懷疑過本身選擇作Android手機平臺上音頻軟件的正確性。如今一年過去了,我以爲選擇是正確的。雖然仍是作音頻開發,可是如今是在更主流更大衆的Android手機平臺上開發,擴展了知識面,並且主要是在底層的DSP上開發(DSP不像ARM那樣頻率高內存大,而是頻率低內存小,這就要求在寫代碼時有更多的技巧,一樣的事情在DSP上開發可能要比在ARM上多花很多時間,這對能力的要求更高),能力也提升了。這一年下來作了很多事情,我本身以爲主要有如下收穫:編程
1)雖然仍是作音頻軟件開發,可是已經切到在更主流的安卓手機平臺上作音頻。通過一年的實踐,對安卓手機上音頻相關的軟硬件有了更深的理解。音頻子系統能夠說是安卓多媒體系統中最複雜的子系統了。外設多,有聽筒(earpiece)、揚聲器(speaker)、有線耳機、藍牙耳機等。使用場景多,聽音樂、錄音、打電話等,其中打電話又分爲傳統語音通訊和APP語音通訊(如微信語音),傳統語音通訊又分爲2/3G語音通訊和4G VoLTE語音通訊。要把這些都作好是很是不容易的。微信
2)豐富了我作語音通訊解決方案的種類,使我對語音通訊方案的掌控更加遊刃有餘。我之前作過有線語音通訊方案,也作過APP語音通訊方案,如今又作了安卓手機上的傳統語音通訊方案,知道了APP語音通訊方案的底層是如何實現的。能夠說是目前主要的語音通訊方案都作過了。網絡
3)作了語音和音樂融合的方案。之前作的音頻方案要麼是語音的,要麼是音樂的,功能單一。如今在Android手機平臺上作音頻,語音和音樂都有,是一個融合方案,複雜度會比單一方案高些。機器學習
4)掌握了在DSP上作音頻軟件開發。DSP上軟件開發和ARM上軟件開發是有一些差別的,在DSP上編程要求比在ARM上高。從剛開始作時的不熟悉不習慣到如今的熟悉習慣,雖然還談不上精通,畢竟才作了一年。post
2,AI學習學習
現在技術更新快,作技術的人就得不停的學新東西。若是學習中止了,一不留神發現本身out了,更慘的是本身競爭力降低出局了。2016年alpha狗打敗圍棋世界冠軍極大的推進了機器學習/深度學習的普及,讓更多人知道了這個領域以及它的巨大威力。語音識別/智能語音做爲深度學習技術最先落地的方向之一,也得到了快速的發展,從傳統的「GMM(高斯混合模型) + HMM(隱馬爾科夫模型)」到GMM用DNN(深度神經網絡)替代,再到HMM摒棄不用而用端到端的CTC和RNN(循環神經網絡)/ CNN(卷積神經網絡)只用了四五年的時間,並且如今還在快速的發展着。我作傳統音頻/語音開發這麼多年,智能語音但是說是語音開發的一個新的方向,我有必要去學習掌握它,做爲本身現有技能的一個擴展,無論將來有沒有機會去作它,再說機會老是給有準備的人的,哈哈。人工智能
學習新技術是須要時間的。我平時工做比較忙,常常加班,工做時間是不可能學習工做內容之外的知識的。週末要帶小孩參加英文等的學習,也有一些私事要處理,也沒多少時間用來學習,只能利用上下班作地鐵的時間學習了。主要是上班途中學習,一是早上頭腦比較清醒,二是下班時忙了一天已經很累了,學習新知識效果很差,還要花點時間刷刷當天發生的新聞,包括科技的財經的等。人既要埋頭工做,也要看外面的世界。我上下班單程要一個多小時,這點時間在地鐵裏戴上耳機聽着音樂,同時打開iPad學着新知識。先從傳統的利用「GMM+HMM」語音識別學起。GMM/HMM主要是機率統計方面的知識,剛開始看時有點暈,畢竟多年不看忘得差很少了。又把當年學時用的書翻了翻,恢復了大部分,再去看GMM/HMM好多了。通過了一段時間的學習,大致上搞明白了用「GMM+HMM」作語音識別的思想。url
GMM/HMM學完後就準備學深度學習。深度學習說的通俗一點又不十分準確就是深層神經網絡。我在十多年前讀研時就簡單學過神經網絡,那時就知道經典的BP算法了。神經網絡是導師的研究方向之一,我不是這個方向的就簡單學了下。當時看着博士師兄們常常在實驗室電腦上用matlab作訓練,心想神經網絡也就只能在高校裏作研究出出論文用,想不到多年後大放光彩,這得感謝Hinton教授呀。這也從另外一個方面說明目前只在高校裏研究的一些東西隨着研究的深刻以及硬件能力的提升說不定往後就能成爲工業界的熱門技術呢。我又把神經網絡認真學了一遍,同時又把高數裏的一些知識點撿了起來,尤爲是梯度。這些都掌握的差很少後就看起了被你們奉爲聖經的書《深度學習》中文電子版。這本書前面有須要用到的數學基礎知識的介紹,也有機器學習基礎知識的介紹,但介紹的不是很詳細,畢竟這些不是該書的重點,只是告訴讀者要看該書須要這些基礎知識。我以前沒學過機器學習,《深度學習》裏只是簡單介紹了下機器學習的基礎知識,我想仍是先學習一下機器學習吧。找來了機器學習領域的大牛南京大學周志華教授的書《機器學習》(俗稱西瓜書),把一些相關的知識強化了一下。再去看《深度學習》,好一些了,仍是有些吃力,公式太多。網上看了一下你們對它的評價,偏學術。就把這本書大概看了一下,沒有深究。後來在網上找到了針對深度學習入門的系列文章(見後面學習材料清單,做者根據這些寫了一本書,叫《深度學習之美》,本月上市),講的通俗易懂,我看了三四遍,基本上搞懂了。在這裏推薦給想入門深度學習的朋友。通過這麼長時間的學習,個人感受是基本上掃盲半入門了,可是缺乏實際項目的操練。如今智能語音主要在雲端作,有在終端(尤爲手機)作的趨勢。我是在手機上作音頻的,但願有機會在手機上作智能語音。下面列出我主要看過的書或者文檔清單,若是有朋友想學這些,能夠做爲參考。
《HMM學習最佳範例》
《機器學習》 (南大周志華)
《深度學習》
一入侯門深似海,深度學習深幾許(https://m.aliyun.com/yunqi/articles/86580)
3,寫技術博客
爲何要寫技術博客呢?主要是受一本書的啓發,這本書叫《軟技能--代碼以外的生存指南》,會寫樂於分享就是其中的一項軟技能。寫技術博客是對本身已有知識和經驗的總結和概括,便於往後溫故而知新(一些知識點一段時間不用就忘記了,把它記下來後面再用到時看一下就恢復起來了),也把本身的知識和經驗分享出來給有須要的朋友。如今作技術的提倡開源分享,如今你跟別人分享了,哪天你在其餘方面有困難時別人也會跟你分享的。好比如今我在學智能語音相關的知識,看了不少博客,也是在分享別人的知識和經驗。同時把知識和經驗寫出來,讓同行看到你在這個領域的能力水平,說不定何時機會就出現呢。作技術也跟好酒同樣,也怕巷子深呀。
在寫技術博客前很久不寫正規文章了。之前在外企會常常寫技術文檔,那都是英文的,並且有模板,寫的你們(尤爲外國同事)能看懂就好了。寫技術博客是用中文寫,講清楚技術和經驗是最基本的,最好圖文並茂。因爲很久不寫文章,剛開始寫時總感受寫不出來,隨着寫的文章愈來愈多,如今好多了。文章發表後就會伴隨着喜悅或者失落。喜悅是文章獲得了你們的承認和推薦,記得發表文章《談談我開發過的幾套語音通訊解決方案》後不只得到你們的承認,並且獲得了博客園編輯的推薦,在主頁上推薦了兩天,兩天內總共有近3000次的閱讀量,也得到了17次的推薦,非常開心。失落是文章選題很差或者你們不熟悉,沒什麼閱讀量,有時甚至在博客園主頁沒多久就被編輯撤下了。作事情老是但願被承認的。
個人博客主題是音頻開發,不像其餘技術領域那樣,從業人員很少,我但願看我博客的人都能有收穫,也但願跟更多的同行交流。無論閱讀量的大小,我後面還會繼續寫下去,依舊是工做中音頻相關知識和經驗的總結和概括。加油!努力!爭取出更多高質量的文章!