語音信號的處理流程:
語音信號輸入
↓
數位取樣 → 類比轉數位(類比信號→取樣→量化→編碼→數位信號)
↓
標準化→將原始語音信號做等比例的放大或縮小,使其取樣值都落在同一範圍中。
↓
取音框→短時段被單獨處理的語音信號,等性固定。
↓
端點偵測→將語音前後靜音部分去除,讓辨識結果較正確。(能量量測、越零率、折返率)
↓
預強調→利用高通濾波器,補償衰減掉的高頻部分。
漢明窗
↓
特徵參數求取→(線性預估編碼、倒頻譜係數、濾波器組)
↓
特徵參數輸出
2007年12月18日 星期二
語音辨識技術
參考出處:
http://ace136.auto.fcu.edu.tw/~cslin/scteach/scteach88/Tidsp/n5.htm
http://www.ascc.sinica.edu.tw/nl/87/1407/04.txt
機器辨識技術的對象,主要有聲音和影像兩大類。影像辨識所涵蓋的範圍較廣,諸如文字辨識、指紋辨識、簽名辨識、臉孔辨識、瞳孔辨識、包括上面提到的偽鈔辨識都是。聲音辨識則包括人類發出的語音、樂器發出的音樂、機器發出的噪音、動物的叫聲、聲納、大自然的聲音都是。簡單的說,就是以機器進行人類「眼睛」和 「耳朵」等兩個器官的功能「視覺」及「聽覺」,來達到自動化的效果。順帶一提的是,以機器進行「嗅覺」(人工鼻)、「觸覺」和「味覺」,雖非機器辨識技術的主流,也各有研究進行中。
何謂語音辨識
語音辨識(Speech Recognition)最主要的目的是希望電腦聽懂人類說話的聲音,進而命令電腦執行相對應的工作。當聲音藉由類比到數位的轉換裝置輸入電腦內部,並以數值方式儲存後,語音辨識程式便開始已事先儲存好的聲音樣本與輸入的測試聲音樣本進行比對工作。比對完成後點腦集輸入一個它認為最“像”的聲音樣本序號,我們就可以知道使用者剛剛唸進去的聲音代表何意,進而命令電腦做事。
設計一個語音辨識程式,至少又有兩方面的知識:
1.瞭解如何把外界的聲音訊號抓到電腦內部處理
2.瞭解聲音比對原理
語音辨識之技術分類
在「辨識技術」這個領域,依辨識對象的變化程度,而有不同的困難度。
語音特性的變化因素包括
(1)不同語者的變化:聲帶特徵、說話方式、連音耦合效應、口音等;
(2) 同一語者的變化:情緒、壓力、感冒、Lombard 效應;
(3)噪聲:汽車噪聲、空調噪聲、電話鈴聲、印表機噪聲、多人同時講話等;
(4)環境變化:反射(Re flection)、回音(Reverberation)、麥克風特性及與語者的距離等。
一般把語音辨識技術,根據詞彙大小、系統訓練、及發音方式做不同組合的分類。
詞彙大小分為
小字彙(小於 100 詞)、
中字彙(100 - 1000 詞)、
大字彙(1001 - 10000 詞)、
極大字彙(大於10000 詞)等。
系統訓練則有
(1)特定語者(Speaker-Dependent):使用前需訓練數十分鐘至數小時;
(2) 非特定語者(Speaker-Independent):不需訓練,可立即使用;
(3)系統調適(Speaker-Adaptation):數分鐘至數十分鐘的調適訓練。
至於發音方式有
(1)單字音:字與字需斷開;
(2)單詞連續發音:又細分為孤立詞、及詞詞斷開,連接成句兩種;
(3)整句連續語音: 又細分為關鍵詞萃取(Keyword Spotting)及全句辨識等兩種。
電腦採用數位化的語音取樣資料,我們要知道對電腦而言,即使同一個人在同一個環境使用同樣的麥克風連續發出兩次同樣的語音,語音取樣資料也不可能完全相同,因此如何把語音做正確的歸類 ,異中求同,就是問題所在。一般常見的作法是(事先或現場)蒐集足夠的語音樣本,經過抽取適當的語音特徵(Feature Extration)之後,透過訓練程序(Training Procedure),建立參考聲學模型( Acoustic Model)所需的參數。而在使用者辨識的階段,將輸入的語音樣本抽取語音特徵之後,和辨識字彙中的參考聲學模型比對,找出最接近的字彙,是為辨識結果。看似簡單,其實各步驟均有許多變化,尤其是聲學模型比對步驟的兩大問題:時序校準( Time Alignment)及參數模型比對。時序校準在於找出正確的聲學單位(如詞、音節、次音節、聲韻母、音素等)的起點跟終點,在連續音的情況下問題更為嚴重;這也是為什麼單字音比連音詞容易辨識,而連音詞又比整句連續語音容易辨識的主要原因。參數模型比對則在以什麼參數、多少參數建構參考模型,可以是語音原始樣本,也可以是語音特徵樣本,但更多的是離散(discrete )或連續密度的(continuous density)機率分佈模型。
在選擇語音辨識技術或產品的必須考慮的因素有下列幾點:
(1) 技術分類合適性: 詞彙大小、特定語者/非特定語者/系統調適、發音方式(單字/孤立詞/詞詞斷開/關鍵詞萃取/全句辨識);
(2) 辨識率;(3) 辨識速度;(4) 使用平台 (Platform) : 操作系統、CPU、Memory、音效卡/DSP卡、麥克風(種類與距離);
(5)成本;
(6)抗噪音能力;
(7) 是否透過電話線;
(8) 拒認能力: 提高可靠度,寧願拒認,不要錯認;
(9) 多國語言;
(10) 標準應用程式介面 (API):易於開發應用程式。
http://ace136.auto.fcu.edu.tw/~cslin/scteach/scteach88/Tidsp/n5.htm
http://www.ascc.sinica.edu.tw/nl/87/1407/04.txt
機器辨識技術的對象,主要有聲音和影像兩大類。影像辨識所涵蓋的範圍較廣,諸如文字辨識、指紋辨識、簽名辨識、臉孔辨識、瞳孔辨識、包括上面提到的偽鈔辨識都是。聲音辨識則包括人類發出的語音、樂器發出的音樂、機器發出的噪音、動物的叫聲、聲納、大自然的聲音都是。簡單的說,就是以機器進行人類「眼睛」和 「耳朵」等兩個器官的功能「視覺」及「聽覺」,來達到自動化的效果。順帶一提的是,以機器進行「嗅覺」(人工鼻)、「觸覺」和「味覺」,雖非機器辨識技術的主流,也各有研究進行中。
何謂語音辨識
語音辨識(Speech Recognition)最主要的目的是希望電腦聽懂人類說話的聲音,進而命令電腦執行相對應的工作。當聲音藉由類比到數位的轉換裝置輸入電腦內部,並以數值方式儲存後,語音辨識程式便開始已事先儲存好的聲音樣本與輸入的測試聲音樣本進行比對工作。比對完成後點腦集輸入一個它認為最“像”的聲音樣本序號,我們就可以知道使用者剛剛唸進去的聲音代表何意,進而命令電腦做事。
設計一個語音辨識程式,至少又有兩方面的知識:
1.瞭解如何把外界的聲音訊號抓到電腦內部處理
2.瞭解聲音比對原理
語音辨識之技術分類
在「辨識技術」這個領域,依辨識對象的變化程度,而有不同的困難度。
語音特性的變化因素包括
(1)不同語者的變化:聲帶特徵、說話方式、連音耦合效應、口音等;
(2) 同一語者的變化:情緒、壓力、感冒、Lombard 效應;
(3)噪聲:汽車噪聲、空調噪聲、電話鈴聲、印表機噪聲、多人同時講話等;
(4)環境變化:反射(Re flection)、回音(Reverberation)、麥克風特性及與語者的距離等。
一般把語音辨識技術,根據詞彙大小、系統訓練、及發音方式做不同組合的分類。
詞彙大小分為
小字彙(小於 100 詞)、
中字彙(100 - 1000 詞)、
大字彙(1001 - 10000 詞)、
極大字彙(大於10000 詞)等。
系統訓練則有
(1)特定語者(Speaker-Dependent):使用前需訓練數十分鐘至數小時;
(2) 非特定語者(Speaker-Independent):不需訓練,可立即使用;
(3)系統調適(Speaker-Adaptation):數分鐘至數十分鐘的調適訓練。
至於發音方式有
(1)單字音:字與字需斷開;
(2)單詞連續發音:又細分為孤立詞、及詞詞斷開,連接成句兩種;
(3)整句連續語音: 又細分為關鍵詞萃取(Keyword Spotting)及全句辨識等兩種。
實際應用:語音辨識的作法
聽寫機(Dictation Machine)和語音指令&控制(Voice Command/Control)。
市面上的聽寫機一般為特定語者、單字音或單詞、極大字彙的語音辨識技術。
音指令&控制則為特定語者或非特定語者、單詞、中或小字彙的技術。
電腦採用數位化的語音取樣資料,我們要知道對電腦而言,即使同一個人在同一個環境使用同樣的麥克風連續發出兩次同樣的語音,語音取樣資料也不可能完全相同,因此如何把語音做正確的歸類 ,異中求同,就是問題所在。一般常見的作法是(事先或現場)蒐集足夠的語音樣本,經過抽取適當的語音特徵(Feature Extration)之後,透過訓練程序(Training Procedure),建立參考聲學模型( Acoustic Model)所需的參數。而在使用者辨識的階段,將輸入的語音樣本抽取語音特徵之後,和辨識字彙中的參考聲學模型比對,找出最接近的字彙,是為辨識結果。看似簡單,其實各步驟均有許多變化,尤其是聲學模型比對步驟的兩大問題:時序校準( Time Alignment)及參數模型比對。時序校準在於找出正確的聲學單位(如詞、音節、次音節、聲韻母、音素等)的起點跟終點,在連續音的情況下問題更為嚴重;這也是為什麼單字音比連音詞容易辨識,而連音詞又比整句連續語音容易辨識的主要原因。參數模型比對則在以什麼參數、多少參數建構參考模型,可以是語音原始樣本,也可以是語音特徵樣本,但更多的是離散(discrete )或連續密度的(continuous density)機率分佈模型。
聲學模型作法可大致分為下列幾種:實用化語音辨識技術的考慮
(1)語音模版(Template)法–適用於小字彙、特定語者的應用;
(2)動態時間校準(Dynamic Time Warping;
(3)隱馬可夫模型 (HMM,Hidden Markov Model):又可細分為利用向量量化(Vector Quantization) 技巧的離散的、
連續密度的、半連續的 (semi-continuous) 隱馬可夫模型及簡化的分段機率模型(SPM, Segmental Probabilistic Model);
(4)人工神經網路(Neural Networks);
(5)聲學知識模型;
(6)混合式(Hybrid) 作法等等。
除了小字彙的應用之外,不論在實驗室雛型或商用產品,語音辨識系統大多採用隱馬可夫模型或其變型。
在選擇語音辨識技術或產品的必須考慮的因素有下列幾點:
(1) 技術分類合適性: 詞彙大小、特定語者/非特定語者/系統調適、發音方式(單字/孤立詞/詞詞斷開/關鍵詞萃取/全句辨識);
(2) 辨識率;(3) 辨識速度;(4) 使用平台 (Platform) : 操作系統、CPU、Memory、音效卡/DSP卡、麥克風(種類與距離);
(5)成本;
(6)抗噪音能力;
(7) 是否透過電話線;
(8) 拒認能力: 提高可靠度,寧願拒認,不要錯認;
(9) 多國語言;
(10) 標準應用程式介面 (API):易於開發應用程式。
語音辨識技術之應用
TMA Associates市調公司在最近的一份調查報告中,把語音辨識產品分為四大類:
(1)電腦產品:麥克風直接連接電腦,可以電腦螢幕顯示回饋辨識結果,由於電腦使用者常為固定而長時間使用,可採用特定語者或語者調適技術;
應用舉例如語音聽寫、PC語音控制、語音資料存取、遊戲軟體、語言訓練等;
(2)電話產品:語音透過有線或無線傳輸給辨識器,以聲音回饋給使用者,非特定麥克風,經常為短暫交談互動,宜採用非特定語者技術;
應用舉例如電話網路之語音撥號或其他辨識/驗證服務、以語音而非按鍵控制之互動語音回應系統、PC上之電話語音辨識;
(3)消費性電子產品:麥克風為產品之一部分,小或無螢幕顯示,小包裝,常為電池供電,中低價位;
應用舉例如電話機內建的語音撥號、可攜式電子記事簿、電視遙控、語音撥號行動電話、聲控玩具、語言學習;
(4)汽車及工業應用產品:高噪聲環境,眼及雙手忙碌,特殊裝備需求,應用免手持麥克風;
應用舉例如汽車導覽系統、收音機控制工業品管、包裝處理、車用行動電話等。
2007年12月14日 星期五
[轉載] GPS start-up
出處:http://bbs.100gps.com/thread-1312-1-1.html
GPS開機定位分為冷啟動、溫啟動和熱啟動三種:
冷啟動:以下幾種情況開機均屬冷啟動。
初次使用時;電池耗盡導致星曆訊息丟失時;關機狀態下將接收機移動1000公里以上距離。
溫啟動:距離上次定位的時間超過兩個小時的啟動。
熱啟動:距離上次定位的時間小於兩個小時的啟動。
有時候如果機器有軟件問題,需要進行冷啟動,冷啟動可以使用gpsviewer進行。
GPS開機定位分為冷啟動、溫啟動和熱啟動三種:
冷啟動:以下幾種情況開機均屬冷啟動。
初次使用時;電池耗盡導致星曆訊息丟失時;關機狀態下將接收機移動1000公里以上距離。
溫啟動:距離上次定位的時間超過兩個小時的啟動。
熱啟動:距離上次定位的時間小於兩個小時的啟動。
有時候如果機器有軟件問題,需要進行冷啟動,冷啟動可以使用gpsviewer進行。
2007年12月6日 星期四
BattDrv_saving power issue
將battery polling時間拉長至五分鐘
當usb發生中斷將電池狀態通知ce
int WINAPI CheckACChargerThread()
{
SYSTEM_POWER_STATUS_EX2 tmpst;
PBATTERY_CONTEXT pbc = (PBATTERY_CONTEXT) &gBatteryContext;
RETAILMSG(1, (TEXT("++CheckACChargerThread \r\n")));
while(TRUE)
{
InterruptDone(SYSINTR_ACChargerDetect);
WaitForSingleObject(g_hACChargerDetect, INFINITE);
//////////////////////////////////////
// update battery status information
LockBattery();
BatteryAPIGetSystemPowerStatusEx2(&tmpst, sizeof(tmpst), TRUE);
UnlockBattery();
// has anything changed?
if(memcmp(&tmpst, &pbc->st, sizeof(pbc->st)) != 0)
{
// yes, update our global variable and notify the power manager
pbc->st = tmpst;
PowerPolicyNotify(PPN_POWERCHANGE, 0);
}
//////////////////////////////////////
if(PIO_READ_INPUT(GPIO, GPIO_GROUP(0),GPIO_INDEX(2)))
{
RETAILMSG(1,(TEXT("++CheckACChargerThread USB IN!!!\r\n")));
}
else
{
RETAILMSG(1,(TEXT("++CheckACChargerThread USB OUT!!!\r\n")));
}
}
}
當usb發生中斷將電池狀態通知ce
int WINAPI CheckACChargerThread()
{
SYSTEM_POWER_STATUS_EX2 tmpst;
PBATTERY_CONTEXT pbc = (PBATTERY_CONTEXT) &gBatteryContext;
RETAILMSG(1, (TEXT("++CheckACChargerThread \r\n")));
while(TRUE)
{
InterruptDone(SYSINTR_ACChargerDetect);
WaitForSingleObject(g_hACChargerDetect, INFINITE);
//////////////////////////////////////
// update battery status information
LockBattery();
BatteryAPIGetSystemPowerStatusEx2(&tmpst, sizeof(tmpst), TRUE);
UnlockBattery();
// has anything changed?
if(memcmp(&tmpst, &pbc->st, sizeof(pbc->st)) != 0)
{
// yes, update our global variable and notify the power manager
pbc->st = tmpst;
PowerPolicyNotify(PPN_POWERCHANGE, 0);
}
//////////////////////////////////////
if(PIO_READ_INPUT(GPIO, GPIO_GROUP(0),GPIO_INDEX(2)))
{
RETAILMSG(1,(TEXT("++CheckACChargerThread USB IN!!!\r\n")));
}
else
{
RETAILMSG(1,(TEXT("++CheckACChargerThread USB OUT!!!\r\n")));
}
}
}
訂閱:
文章 (Atom)