寫在技術博客開通一周年之際:這一年在技術上我做了什么


去年的這個時候我在博客園開通了技術博客。一晃一年過去了,這一年中我寫了二十幾篇原創,全是對音頻開發中的知識和經驗的總結。不高產,差不多一個月兩篇的節奏。平時工作比較忙,基本都是利用周末時間寫出來的。中途有一段時間特別忙,差點想放棄,慶幸還是堅持下來了。我想后面還會堅持下去,內容還是對我工作中知識和經驗的總結。人們通常喜歡在一周年之際做一些總結,我也不例外,今天我來總結一下過去的一年在技術上我做了什么。總結下來主要做了三件事:音頻開發、人工智能(AI) 學習、寫技術博客。

 

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上高。從剛開始做時的不熟悉不習慣到現在的熟悉習慣,雖然還談不上精通,畢竟才做了一年。

 

2,AI學習

如今技術更新快,做技術的人就得不停的學新東西。如果學習停止了,一不留神發現自己out了,更慘的是自己競爭力下降出局了。2016年alpha狗戰勝圍棋世界冠軍極大的推動了機器學習/深度學習的普及,讓更多人知道了這個領域以及它的巨大威力。語音識別/智能語音作為深度學習技術最早落地的方向之一,也獲得了快速的發展,從傳統的“GMM(高斯混合模型) + HMM(隱馬爾科夫模型)”到GMM用DNN(深度神經網絡)替代,再到HMM摒棄不用而用端到端的CTC和RNN(循環神經網絡)/ CNN(卷積神經網絡)只用了四五年的時間,而且現在還在快速的發展着。我做傳統音頻/語音開發這么多年,智能語音可是說是語音開發的一個新的方向,我有必要去學習掌握它,作為自己現有技能的一個擴展,不管未來有沒有機會去做它,再說機會總是給有准備的人的,哈哈。

 

學習新技術是需要時間的。我平時工作比較忙,經常加班,工作時間是不可能學習工作內容以外的知識的。周末要帶小孩參加英文等的學習,也有一些私事要處理,也沒多少時間用來學習,只能利用上下班做地鐵的時間學習了。主要是上班途中學習,一是早上頭腦比較清醒,二是下班時忙了一天已經很累了,學習新知識效果不好,還要花點時間刷刷當天發生的新聞,包括科技的財經的等。人既要埋頭工作,也要看外面的世界。我上下班單程要一個多小時,這點時間在地鐵里戴上耳機聽着音樂,同時打開iPad學着新知識。先從傳統的利用“GMM+HMM”語音識別學起。GMM/HMM主要是概率統計方面的知識,剛開始看時有點暈,畢竟多年不看忘得差不多了。又把當年學時用的書翻了翻,恢復了大部分,再去看GMM/HMM好多了。經過了一段時間的學習,大體上搞明白了用“GMM+HMM”做語音識別的思想。

 

GMM/HMM學完后就准備學深度學習。深度學習說的通俗一點又不十分准確就是深層神經網絡。我在十多年前讀研時就簡單學過神經網絡,那時就知道經典的BP算法了。神經網絡是導師的研究方向之一,我不是這個方向的就簡單學了下。當時看着博士師兄們經常在實驗室電腦上用matlab做訓練,心想神經網絡也就只能在高校里做研究出出論文用,想不到多年后大放光彩,這得感謝Hinton教授呀。這也從另一個方面說明目前只在高校里研究的一些東西隨着研究的深入以及硬件能力的提高說不定日后就能成為工業界的熱門技術呢。我又把神經網絡認真學了一遍,同時又把高數里的一些知識點撿了起來,尤其是梯度。這些都掌握的差不多后就看起了被大家奉為聖經的書《深度學習》中文電子版。這本書前面有需要用到的數學基礎知識的介紹,也有機器學習基礎知識的介紹,但介紹的不是很詳細,畢竟這些不是該書的重點,只是告訴讀者要看該書需要這些基礎知識。我之前沒學過機器學習,《深度學習》里只是簡單介紹了下機器學習的基礎知識,我想還是先學習一下機器學習吧。找來了機器學習領域的大牛南京大學周志華教授的書《機器學習》(俗稱西瓜書),把一些相關的知識強化了一下。再去看《深度學習》,好一些了,還是有些吃力,公式太多。網上看了一下大家對它的評價,偏學術。就把這本書大概看了一下,沒有深究。后來在網上找到了針對深度學習入門的系列文章(見后面學習材料清單,作者根據這些寫了一本書,叫《深度學習之美》,本月上市),講的通俗易懂,我看了三四遍,基本上搞懂了。在這里推薦給想入門深度學習的朋友。經過這么長時間的學習,我的感覺是基本上掃盲半入門了,但是缺少實際項目的操練。現在智能語音主要在雲端做,有在終端(尤其手機)做的趨勢。我是在手機上做音頻的,希望有機會在手機上做智能語音。下面列出我主要看過的書或者文檔清單,如果有朋友想學這些,可以作為參考。

《HMM學習最佳范例》

《機器學習》 (南大周志華)

《深度學習》

  一入侯門深似海,深度學習深幾許(https://m.aliyun.com/yunqi/articles/86580)

 

3,寫技術博客

為什么要寫技術博客呢?主要是受一本書的啟發,這本書叫《軟技能--代碼之外的生存指南》,會寫樂於分享就是其中的一項軟技能。寫技術博客是對自己已有知識和經驗的總結和歸納,便於日后溫故而知新(一些知識點一段時間不用就忘記了,把它記下來后面再用到時看一下就恢復起來了),也把自己的知識和經驗分享出來給有需要的朋友。現在做技術的提倡開源分享,現在你跟別人分享了,哪天你在其他方面有困難時別人也會跟你分享的。比如現在我在學智能語音相關的知識,看了很多博客,也是在分享別人的知識和經驗。同時把知識和經驗寫出來,讓同行看到你在這個領域的能力水平,說不定什么時候機會就出現呢。做技術也跟好酒一樣,也怕巷子深呀。

 

在寫技術博客前好久不寫正規文章了。以前在外企會經常寫技術文檔,那都是英文的,而且有模板,寫的大家(尤其外國同事)能看懂就行了。寫技術博客是用中文寫,講清楚技術和經驗是最基本的,最好圖文並茂。由於好久不寫文章,剛開始寫時總感覺寫不出來,隨着寫的文章越來越多,現在好多了。文章發表后就會伴隨着喜悅或者失落。喜悅是文章得到了大家的認可和推薦,記得發表文章《談談我開發過的幾套語音通信解決方案》后不僅獲得大家的認可,而且得到了博客園編輯的推薦,在主頁上推薦了兩天,兩天內總共有近3000次的閱讀量,也獲得了17次的推薦,很是開心。失落是文章選題不好或者大家不熟悉,沒什么閱讀量,有時甚至在博客園主頁沒多久就被編輯撤下了。做事情總是希望被認可的。

 

我的博客主題是音頻開發,不像其他技術領域那樣,從業人員不多,我希望看我博客的人都能有收獲,也希望跟更多的同行交流。不管閱讀量的大小,我后面還會繼續寫下去,依舊是工作中音頻相關知識和經驗的總結和歸納。加油!努力!爭取出更多高質量的文章!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM