AI語音識別的技術解析

從語音識別算法的發展來看,語音識別技術主要分為三大類,第一類是模型匹配法,包括矢量量化(VQ) 、動態時間規整(DTW)等;第二類是概率統計方法,包括高斯混合模型(GMM) 、隱馬爾科夫模型(HMM)等;第三類是辨別器分類方法,如支持向量機(SVM) 、人工神經網絡(ANN)和深度神經網絡(DNN)等多種組合方法。下面對主流的識別技術做簡單介紹:

  1. 動態時間規整(DTW)

語音識別中,由于語音信號的隨機性,即使同一個人發的同一個音,只要說話環境和情緒不同,時間長度也不盡相同,因此時間規整是必不可少的。DTW是一種將時間規整與距離測度有機結合的非線性規整技術,在語音識別時,需要把測試模板與參考模板進行實際比對和非線性伸縮,并依照某種距離測度選取距離最小的模板作為識別結果輸出。動態時間規整技術的引入,將測試語音映射到標準語音時間軸上,使長短不等的兩個信號最后通過時間軸彎折達到一樣的時間長度,進而使得匹配差別最小,結合距離測度,得到測試語音與標準語音之間的距離。

  1. 支持向量機(SVM)

支持向量機是建立在VC維理論和結構風險最小理論基礎上的分類方法,它是根據有限樣本信息在模型復雜度與學習能力之間尋求最佳折中。從理論上說,SVM就是一個簡單的尋優過程,它解決了神經網絡算法中局部極值的問題,得到的是全局最優解。SVM已經成功地應用到語音識別中,并表現出良好的識別性能。

  1. 矢量量化(VQ)

矢量量化是一種廣泛應用于語音和圖像壓縮編碼等領域的重要信號壓縮技術,思想來自香農的率-失真理論。其基本原理是把每幀特征矢量參數在多維空間中進行整體量化,在信息量損失較小的情況下對數據進行壓縮。因此,它不僅可以減小數據存儲,而且還能提高系統運行速度,保證語音編碼質量和壓縮效率,一般應用于小詞匯量的孤立詞語音識別系統。

  1. 隱馬爾科夫模型(HMM)

隱馬爾科夫模型是一種統計模型,目前多應用于語音信號處理領域。在該模型中,馬爾科夫(Markov)鏈中的一個狀態是否轉移到另一個狀態取決于狀態轉移概率,而某一狀態產生的觀察值取決于狀態生成概率。在進行語音識別時,HMM首先為每個識別單元建立發聲模型,通過長時間訓練得到狀態轉移概率矩陣和輸出概率矩陣,在識別時根據狀態轉移過程中的最大概率進行判決。

  1. 高斯混合模型(GMM)

高斯混合模型是單一高斯概率密度函數的延伸,GMM能夠平滑地近似任意形狀的密度分布。高斯混合模型種類有單高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)兩類。類似于聚類,根據高斯概率密度函數(Probability Density Function, PDF)參數不同,每一個高斯模型可以看作一種類別,輸入一個樣本x,即可通過PDF計算其值,然后通過一個閾值來判斷該樣本是否屬于高斯模型。很明顯,SGM適合于僅有兩類別問題的劃分,而GMM由于具有多個模型,劃分更為精細,適用于多類別的劃分,可以應用于復雜對象建模。目前在語音識別領域,GMM需要和HMM一起構建完整的語音識別系統。

  1. 人工神經網絡(ANN/BP)

人工神經網絡由20世紀80年代末提出,其本質是一個基于生物神經系統的自適應非線性動力學系統,它旨在充分模擬神經系統執行任務的方式。如同人的大腦一樣,神經網絡是由相互聯系、相互影響各自行為的神經元構成,這些神經元也稱為節點或處理單元。神經網絡通過大量節點來模仿人類神經元活動,并將所有節點連接成信息處理系統,以此來反映人腦功能的基本特性。盡管ANN模擬和抽象人腦功能很精準,但它畢竟是人工神經網絡,只是一種模擬生物感知特性的分布式并行處理模型。ANN的獨特優點及其強大的分類能力和輸入輸出映射能力促成在許多領域被廣泛應用,特別是在語音識別、圖像處理、指紋識別、計算機智能控制及專家系統等領域。但從當前語音識別系統來看,由于ANN對語音信號的時間動態特性描述不夠充分,大部分采用ANN與傳統識別算法相結合的系統。

  1. 深度神經網絡/深信度網絡-隱馬爾科夫(DNN/DBN-HMM)

當前諸如ANN、BP等多數分類的學習方法都是淺層結構算法,與深層算法相比存在局限。尤其當樣本數據有限時,它們表征復雜函數的能力明顯不足。深度學習可通過學習深層非線性網絡結構,實現復雜函數逼近,表征輸入數據分布式,并展現出從少數樣本集中學習本質特征的強大能力。在深度結構非凸目標代價函數中普遍存在的局部最小是訓練效果不理想的主要根源。為了解決以上問題,提出基于深度神經網絡(DNN) 的非監督貪心逐層訓練算法,它利用空間相對關系減少參數數目以提高神經網絡的訓練性能。相比傳統的基于GMM-HMM的語音識別系統,其最大的改變是采用深度神經網絡替換GMM模型對語音的觀察概率進行建模。最初主流的深度神經網絡是最簡單的前饋型深度神經網絡(Feedforward Deep Neural Network,FDNN)。DNN相比GMM的優勢在于:1. 使用DNN估計HMM的狀態的后驗概率分布不需要對語音數據分布進行假設;2. DNN的輸入特征可以是多種特征的融合,包括離散或者連續的;3. DNN可以利用相鄰的語音幀所包含的結構信息。基于DNN-HMM識別系統的模型如圖2所示。

  1. 循環神經網絡(RNN)

語音識別需要對波形進行加窗、分幀、提取特征等預處理。訓練GMM時候,輸入特征一般只能是單幀的信號,而對于DNN可以采用拼接幀作為輸入,這些是DNN相比GMM可以獲得很大性能提升的關鍵因素。然而,語音是一種各幀之間具有很強相關性的復雜時變信號,這種相關性主要體現在說話時的協同發音現象上,往往前后好幾個字對我們正要說的字都有影響,也就是語音的各幀之間具有長時相關性。采用拼接幀的方式可以學到一定程度的上下文信息。但是由于DNN輸入的窗長是固定的,學習到的是固定輸入到輸入的映射關系,從而導致DNN對于時序信息的長時相關性的建模是較弱的。

考慮到語音信號的長時相關性,一個自然而然的想法是選用具有更強長時建模能力的神經網絡模型。于是,循環神經網絡(Recurrent Neural Network,RNN)近年來逐漸替代傳統的DNN成為主流的語音識別建模方案。如圖3,相比前饋型神經網絡DNN,循環神經網絡在隱層上增加了一個反饋連接,也就是說,RNN隱層當前時刻的輸入有一部分是前一時刻的隱層輸出,這使得RNN可以通過循環反饋連接看到前面所有時刻的信息,這賦予了RNN記憶功能。這些特點使得RNN非常適合用于對時序信號的建模。

  1. 長短時記憶模塊(LSTM)

長短時記憶模塊 (Long-Short Term Memory,LSTM) 的引入解決了傳統簡單RNN梯度消失等問題,使得RNN框架可以在語音識別領域實用化并獲得了超越DNN的效果,目前已經使用在業界一些比較先進的語音系統中。除此之外,研究人員還在RNN的基礎上做了進一步改進工作,如圖4是當前語音識別中的主流RNN聲學模型框架,主要包含兩部分:深層雙向RNN和序列短時分類(Connectionist Temporal Classification,CTC)輸出層。其中雙向RNN對當前語音幀進行判斷時,不僅可以利用歷史的語音信息,還可以利用未來的語音信息,從而進行更加準確的決策;CTC使得訓練過程無需幀級別的標注,實現有效的“端對端”訓練。

  1. 卷積神經網絡(CNN)

CNN早在2012年就被用于語音識別系統,并且一直以來都有很多研究人員積極投身于基于CNN的語音識別系統的研究,但始終沒有大的突破。最主要的原因是他們沒有突破傳統前饋神經網絡采用固定長度的幀拼接作為輸入的思維定式,從而無法看到足夠長的語音上下文信息。另外一個缺陷是他們只是將CNN視作一種特征提取器,因此所用的卷積層數很少,一般只有一到二層,這樣的卷積網絡表達能力十分有限。針對這些問題,提出了一種名為深度全序列卷積神經網絡(Deep Fully Convolutional Neural Network,DFCNN)的語音識別框架,使用大量的卷積層直接對整句語音信號進行建模,更好地表達了語音的長時相關性。DFCNN,它直接將一句語音轉化成一張圖像作為輸入,即先對每幀語音進行傅里葉變換,再將時間和頻率作為圖像的兩個維度,然后通過非常多的卷積層和池化(pooling)層的組合,對整句語音進行建模,輸出單元直接與最終的識別結果比如音節或者漢字相對應。

  1. 識別技術的發展方向

更有效的序列到序列直接轉換的模型。序列到序列直接轉換的模型目前來講主要有兩個方向,一是CTC模型;二是Attention 模型。

雞尾酒會問題(遠場識別)。這個問題在近場麥克風并不明顯,這是因為人聲的能量對比噪聲非常大,而在遠場識別系統上,信噪比下降得很厲害,所以這個問題就變得非常突出,成為了一個非常關鍵、比較難解決的問題。雞尾酒會問題的主要困難在于標簽置換(Label Permutation),目前較好的解決方案有二,一是深度聚類(Deep Clustering);二是置換不變訓練(Permutation invariant Training)。

持續預測與自適應模型。能否建造一個持續做預測并自適應的系統。它需要的特點一個是能夠非常快地做自適應并優化接下來的期望識別率。另一個是能發現頻度高的規律并把這些變成模型默認的一部分,不需要再做訓練。前后端聯合優化。前端注重音頻質量提升,后端注重識別性能和效率提升。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710961.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

golang gin單獨部署vue3.0前后端分離應用

概述 因為公司最近的項目前端使用vue 3.0,后端api使用golang gin框架。測試通過后,博文記錄,用于備忘。 步驟 npm run build,構建出前端項目的dist目錄,dist目錄的結構具體如下圖 將dist目錄復制到后端程序同級目錄…

嵌入式軟件bug從哪里來,到哪里去

摘要:軟件從來不是一次就能完美的,需要以包容的眼光看待它的殘缺。那問題究竟為何產生,如何去除呢? 1、軟件問題從哪來 軟件缺陷問題千千萬萬,主要是需求、實現、和運行環境三方面。 1.1 需求描述偏差 客戶角度的描…

PSO-CNN-LSTM多輸入回歸預測|粒子群算法優化的卷積-長短期神經網絡回歸預測(Matlab)——附代碼數據

目錄 一、程序及算法內容介紹: 基本內容: 亮點與優勢: 二、實際運行效果: 三、算法介紹: 四、完整程序數據分享下載: 一、程序及算法內容介紹: 基本內容: 本代碼基于Matlab平臺…

5 局域網基礎(3)

1.AAA 服務器 AAA 是驗證、授權和記賬(Authentication、Authorization、Accounting)3個英文單詞的簡稱,是一個能夠處理用戶訪問請求的服務器程序,提供驗證授權以及帳戶服務,主要目的是管理用戶訪問網絡服務器,對具有訪問權的用戶提供服務。AAA服務器通常…

Java TCP文件上傳案例

文件上傳分析 【客戶端】輸入流,從硬盤讀取文件數據到程序中。【客戶端】輸出流,寫出文件數據到服務端。【服務端】輸入流,讀取文件數據到服務端程序。【服務端】輸出流,寫出文件數據到服務器硬盤中。 基本實現 服務端實現 pu…

【二分查找】樸素二分查找

二分查找 題目描述 給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target ,寫一個函數搜索 nums 中的 target,如果目標值存在返回下標,否則返回 -1。 示例 1: 輸入: nums [-1,0,3,5,9,12], target 9…

網絡編程:基于TCP和UDP的服務器、客戶端

1.基于TCP通信服務器 程序代碼&#xff1a; 1 #include<myhead.h>2 #define SER_IP "192.168.126.121"//服務器IP3 #define SER_PORT 8888//服務器端口號4 int main(int argc, const char *argv[])5 {6 //1.創建用于監聽的套接字7 int sfd-1;8 sf…

MYSQL C++鏈接接口編程

使用MYSQL 提供的C接口來訪問數據庫,官網比較零碎,又不想全部精讀一下,百度CSDN都是亂七八糟的,大部分不可用 官網教程地址 https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-connecting.html 網上之所以亂七八糟,主要是MYSQL提供了3個接口兩個包,使用…

C++ //練習 10.9 實現你自己的elimDups。測試你的程序,分別在讀取輸入后、調用unique后以及調用erase后打印vector的內容。

C Primer&#xff08;第5版&#xff09; 練習 10.9 練習 10.9 實現你自己的elimDups。測試你的程序&#xff0c;分別在讀取輸入后、調用unique后以及調用erase后打印vector的內容。 環境&#xff1a;Linux Ubuntu&#xff08;云服務器&#xff09; 工具&#xff1a;vim 代碼…

Flask g對象和插件

四、Flask進階 1. Flask插件 I. flask-caching 安裝 pip install flask-caching初始化 from flask_cache import Cache cache Cache(config(CACHE_TYPE:"simple" )) cache.init_app(appapp)使用 在視圖函數上添加緩存 blue.route("/") cache.cached(tim…

django5生產級部署和并發測試(開發者服務器和uvicorn服務器)

目錄 1. 創建django項目2. 安裝壓力測試工具3. 安裝生產級服務器uvicorn4. 多進程部署 1. 創建django項目 在桌面創建一個名為django_test的項目&#xff1a; django-admin startproject django_test然后使用cd命令進入django_test文件夾內&#xff0c;使用開發者服務器運行項…

前端架構: 腳手架包管理工具之lerna的全流程開發教程

Lerna 1 &#xff09;文檔 Lerna 文檔 https://www.npmjs.com/package/lernahttps://lerna.js.org [請直達這個鏈接] 使用 Lerna 幫助我們做包管理&#xff0c;并不復雜&#xff0c;中間常用的命令并不是很多這里是命令直達&#xff1a;https://lerna.js.org/docs/api-referen…

掌匯云 | FBIF個性化票務系統,展會活動數據好沉淀

“把票全賣光&#xff01;賣到一票難求&#xff0c;現場座無虛席。” 賣票人和買票人可能永遠不在一個頻道上。 2022年辦活動&#xff0c;就是一個字&#xff0c;搏&#xff01;和“黑天鵝”趕時間&#xff0c;能不能辦不由主辦方說了算。這種情況在2023年得到了改善&#xff…

【字典樹】【KMP】【C++算法】3045統計前后綴下標對 II

作者推薦 動態規劃的時間復雜度優化 本文涉及知識點 字符串 字典樹 KMP 前后綴 LeetCode:3045統計前后綴下標對 II 給你一個下標從 0 開始的字符串數組 words 。 定義一個 布爾 函數 isPrefixAndSuffix &#xff0c;它接受兩個字符串參數 str1 和 str2 &#xff1a; 當 st…

C++——內存管理(new和delete)詳解

目錄 C/C內存管理 案例&#xff1a;變量在內存中到底會在哪&#xff1f; New和delete Operator new和operator delete函數 New和delete的原理 對內置類型 對自定義類型 定位new New/delete和malloc/free的區別 C/C內存管理 C/C內存管理分布圖&#xff1a;&#xff08;從…

項目案例:圖像分類技術在直播電商中的應用與實踐

一、引言 在數字化浪潮的推動下&#xff0c;電商行業迎來了一場革命性的變革。直播電商&#xff0c;作為一種新興的購物模式&#xff0c;正以其獨特的互動性和娛樂性&#xff0c;重塑著消費者的購物習慣。通過實時的直播展示&#xff0c;商品的細節得以清晰呈現&#xff0c;而互…

matlab:涉及復雜函數圖像的交點求解

matlab&#xff1a;涉及復雜函數圖像的交點求解 在MATLAB中求解兩個圖像的交點是一個常見的需求。本文將通過一個示例&#xff0c;展示如何求解兩個圖像的交點&#xff0c;并提供相應的MATLAB代碼。 畫出圖像 首先&#xff0c;我們需要繪制兩個圖像&#xff0c;以便直觀地看…

【JavaEE】_HttpServletResponse類

目錄 1. 核心方法 2. 關于setStatus(400)與sendError 2.1 setStatus(400) 2.2 sendError 3. setHeader方法 4. 構造重定向響應 4.1 使用setHeader和setStatus實現重定向 4.2 使用sendRedirect實現重定向 本專欄已有文章介紹HttpServlet和HttpServletRequest類&#…

仿真科普|CAE技術賦能無人機 低空經濟蓄勢起飛

喝一杯無人機送來的現磨熱咖啡&#xff1b;在擁堵的早高峰打個“空中的士”上班&#xff1b;乘坐水陸兩棲飛機來一場“陸海空”立體式觀光……曾經只出現在科幻片里的5D城市魔幻場景&#xff0c;正逐漸走進現實。而推動上述場景實現的&#xff0c;就是近年來越來越熱的“低空經…

前端開發——ElementUI組件的使用

文章目錄 1. Tabs標簽頁2. 單選框 el-radio3. 復選框 el-checkbox4. 下拉框 el-select5. 表格 el-table6. 對話框 el-dialog7. 文字提示 el-tooltip8. 抽屜 el-drawer 1. Tabs標簽頁 <template><el-tabs v-model"activeName" tab-click"handleClick&q…