計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?使用者21171365631112018-03-28 07:02:32

也是靠敲0和1敲出來的,只是多敲一點而已。高階程式設計師拿個磁鐵在電腦主機箱旁邊磨一會也能磨出來。

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?大學生程式設計指南2018-03-28 19:29:26

謝謝邀請,

這個題目要講的深刻點,還真能討論白天,還涉及到軟體開發的發展歷程。無論是文字還是影片或者再或者語音最終都會轉化成二進位制的格式,這都是馮諾依曼計算機體系結構。

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

編譯器只是把這些邏輯程式碼編譯成計算機能識別的二進位制檔案,最初的計算機的程式設計幾乎就是最原始的0101的組合而作,隨著大家的努力從彙編,再到C語言,再到現在的C++程式語言,加上現在大行其道的java,以及爭議最大的程式語言php,開發軟體越來越通俗化,以至於很多人做了很多年都不知道底層語言是如何工作的,分工也精細了。

最近很多人說到底層語言過時了之類的語言,特別是對於C語言,現在作業系統的底層語言實現大部分都是C語言,底層驅動,通訊類的程式設計基本上都有其影子。

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

只不過經過多年的發展,底層很多的東西已經成型,相對來說工作機會就少了許多。但是並不代表沒有公司需要了,工作的要求相對高了一些。造成了一種底層語言找不到工作的假象,這點在公司招聘員工的時候體現出來了,找web後臺開發的一大批投簡歷的,但是招嵌入式的幾乎找不到,大家都忙著培訓速成品了。

覺得不錯就點個贊

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?搬磚程式設計師2018-03-28 09:09:06

首先,感謝邀請。

人類的語音,應該說的是程式語言吧。

先解決說明中的小問題,幾十年前,最開始的程式設計師就是靠0和1“敲”出來,這就是所謂的機器語言(還是人造的),因為硬體簡單,所以只有0和1。

每臺機器對應著一組指令集,程式設計師編寫程式需要記住這些指令集,並且記住每個工作單元的狀態,非常複雜。

後來發明了組合語言,這個和機器語言和接近,相對來說還是容易編寫。

比較有標誌性的是,c語言的誕生,面向過程的思想,隨後的程式語言,都深受其影響。

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

說偏了,下面講一下編譯器的原理。

第一步,進行語法分析,一段程式碼,計算機看到的可能就是一個個字元,計算機需要進行標記,為之後的工作做準備。

第二步,語法分析,透過對之前的標記,我們進一步分析裡面的語法,再一步簡化

第三步,語義分析,其實可以理解為進一步的語法分析,這一步是將之前不易分析出來的部分,進行進一步分析,進一步解釋(標記)。

第四步,最佳化程式碼,如無用的程式碼,計算的結果,註釋等等,這些東西有的已經在前面進行優化了,這根據編譯器的選擇有關。

第五步,生成目的碼。

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

其實,編譯器的核心就是演算法的設計,只是這個演算法非常非常複雜。

我的回答,各位如果覺得還看得過去,動動手指,點個贊!

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?菜鳥01號2018-03-28 09:41:23

謝謝悟空小秘書的邀請

題主你猜的不錯,

第一個編譯器就是人工純手工編寫的

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

有一種編譯方法叫

迭代法

,將一個程式分成很多份,然後讓第一份寫出的編譯器編譯第二份,以此類推,編譯完所有。人工只需要編譯第一份編譯器,這樣就大大降低了工作量。

舉個栗子

c語言程式語言gcc編譯才能執行,而gcc本身又是c語言寫出來的,那gcc是怎麼編譯出來的呢?就像先有雞還是先有蛋的問題。

答案是gcc又由其它語言編譯器編譯的,一般是組合語言,那組合語言是用啥編譯的呢?總有一個最初的編譯器存在。學過組合語言的人都知道,組合語言每一個指令都對應著一個二進位制碼,在計算機早期,人們都是在紙條上寫完程式,然後對照編碼表,一步步編譯成機器語言的。所以,

人的大腦就是最初的那個編譯器

,只不過速度有點慢而已。

有了機器碼,發明了彙編,一切都好辦了,最難的就是如何跨出那第一步。

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?

計算機識別人類的語音要靠編譯器,編譯器是怎麼做的呢?程式設計師魚哥2018-03-28 09:02:00

謝邀!

一、首先回答下題主的問題

程式設計師絕對不會親自動手去寫0101的這種二進位制,哪怕是幾十年前。程式語言有機器語言,低階語言和高階語言之分,任何程式語言都會透過相對應的編譯機制和解釋機制,最終轉換成機器能識別的位元組碼檔案,也就是二進位制檔案(0101…)。

二、語音識別

語音識別技術所涉及的領域包括:訊號處理、模式識別、機率論和資訊理論、發聲機理和聽覺機理、人工智慧等等。

語音識別方法主要是模式匹配法。 在訓練階段,使用者將詞彙表中的每一詞依次說一遍,並且將其特徵向量作為模板存入模板庫。 在識別階段,將輸入語音的特徵向量依次與模板庫中的每個模板進行相似度比較,將相似度最高者作為識別結果輸出。

語音識別的過程就是模電轉換的過程。機器中的聲音模組接收外界語音,透過一系列前端處理,比如對原始語音進行降噪和源音增強處理轉換成電訊號,後端對電訊號進行一系列的處理、編譯和解釋,最終得到機器識別環境能識別的資訊。當然這個過程是非常複雜的,無論如何編譯、解釋、識別對於任何語言或操作來講,其實本身是一種機器和外在事物資訊互動的約定,就像漢語、英語等,不同的語言,不同的文字,不同的意思,這事先都進行了約定,雙方透過這種約定最終達到交流的目的。

以上僅僅是對題主的問題做一個簡單的解答和說明,具體工作原理和過程都是相當抽象和複雜的,如果涉足相關領域可以再做深度研究。希望以上能給予一些幫助。

【無情懷,不編碼。做一個有情懷的碼農,雖千萬人,吾往矣!】

重點關注java自學、java技術、求職,為你導航領路,指點迷津,分享學習感受和技能經驗。歡迎點贊、轉發、關注和留言,任何java自學或求職問題可以留言私信