<4D F736F F D20C16EB1B1ACF5A57EBD75BBBBB1B1BEB92E646F63>

Similar documents
1 TPIS TPIS 2 2

DPJJX1.DOC

12232A LED LED LED EL EL CCFL EL CCF

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

untitled

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

untitled

CA24064B LED LED LED EL EL CCFL EL CCF /

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

逢 甲 大 學

Ps22Pdf

微處理機期末專題

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

ICD ICD ICD ICD ICD

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

目 录

Lab 4

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

Microsoft Word - 專題封面.doc

Microsoft Word - PLC與GP接線說明_缺WDH_2.doc

專題最終版.doc

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

目 录 目 录 1. 安 装 和 快 速 入 门 附 件 1.1 随 机 附 件 附 件 信 息... 3 连 接 和 设 定 1.3 连 接 记 录 纸... 4 快 速 入 门 1.5 发 送 传 真 / 复 印 接 收 传 真

TH2512/TH2512A Tonghui Electronics reserves the right to make changes at any time without notice in order to improve design and supply the best possib

桌上型個人電腦採購規格說明表

untitled

一、研究動機

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

2005.book

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

電腦設備LP 第七組顯示卡規範書

单片机原理及应用实验指导书.doc

Microsoft Word - LP doc

PCM-3386用户手册.doc

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

桌上型個人電腦採購規格說明表

untitled

untitled

USB解决方案.ppt

桌上型個人電腦採購規格說明表

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

1

CC213

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

Microsoft PowerPoint - chap12.ppt

<4F4B5F4C50352D B971B8A3B35DB3C6A655B2D5A9FAB2D32E786C73>

<4D F736F F D20A7EBBCD0B6B7AABEAAFEA5F3322D3935A67EB2C432A6B8B2C433B2D5C5E3A5DCA564B357BD64AED12E646F63>

電腦設備LP _第七組顯示卡規範書

学习MSP430单片机推荐参考书


Microsoft Word - VL880manual-v88313-tc3.doc

51 C 51 isp 10 C PCB C C C C KEIL

untitled

PROTEUS VSM


Microsoft PowerPoint - chap5.ppt

Microsoft Word - ISSFA-0109_B_SM59264_WDT_ APN_TC_.doc

SDP

Microsoft Word - ISSFA-0237_A_SM39R_series_EEPROM_APN_TC_.doc

SPMC75F2413A_EVM_使用说明_V1.2.doc

1abcd.doc

W77E58中文手册

<4D F736F F D FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

車在走天在看 PC前的三輪車日記

audiogram3 Owners Manual

CD DX Onkyo CD CD Cs

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

理性真的普遍嗎 注意力的爭奪戰 科學發展 2012 年 12 月,480 期 13

... 2 SK SK Command KA 9000 COM... 9 SK / SK / Autolock SK

2 12

B1B1z_ch_print.pdf

宏电文档

NT-2000

员工签到录

* 2

» n ¹ú KS0108 x ÍÍÙ q n KS0108 KS KS0107 KS0108 KS *32 128*64 192*64 KS0108 KS0108 KS0107 KS =4096 RAM RAM LCD 2 KS

因 味 V 取 性 又 鸟 U 且 最 大 罗 海 惜 梅 理 春 并 贵 K a t h l ee n S c h w e r d t n er M f l e z S e b a s t i a n C A Fe rs e T 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

行业

NC MCP MPG


DR2010.doc


αlpha-ph800 ph/orp / αlpha-ph800 ph/orp / αlpha-ph800 ph/orp / EUTECH EUTECH Eutech Instruments Pte Ltd. Blk 55, Ayer Rajah Crescent #04-14/2

例 如, 一 个 含 有 2000 个 记 录 的 文 件, 每 个 磁 盘 块 可 容 纳 250 个 记 录, 则 该 文 件 包 含 8 个 磁 盘 块 然 后 对 该 文 件 作 二 路 归 并 的 外 排 序, 每 次 往 内 存 读 入 两 个 磁 盘 块, 排 序 后 再 写 回 磁

untitled

untitled

Adam Equipment


1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()


Keysight Technologies N1090A N1092A/B/C/D/E N1094A/B DCA-M 1 Gb/s 53 GBaud

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

行业

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378>

Comp-AC ACS to 2.2 kw

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

Transcription:

崑山科技大學 電機工程系 聲控紅外線遙控器 指導老師 : 郭崇仁老師製作學生 : 彭俊霖 4900J007 黃律圖 4900J040 白健宏 4900J128 尤志中 4900J185 中華民國九十三年十二月

目錄 前言 ----------------------- 06 第一章語音辨識原理 ----------- 07 1-1 語音辨識的發展歷史 ------- 07 1-2 語音辨識的工作原理 ------- 07 1-2.1 聲音特徵 1-2.2 語音前處理 1-2.3 語音模組訓練 1-2.3.1 音框與狀態的關係 1-2.3.2 音框和狀態配對的時間關係 1-2.3.3 音框和模型關係的機率觀念 1-2.4 語音辨識 1-2.4.1 辨識的方法 1-2.5 語者獨立和語者相依之差異 1-3 語音辨識實例說明 ------- 18 第二章聲控系統 ------------- 21 2-1 VCM 聲控模組介紹 ------- 21-1 -

2-1.1 VCM 聲控模組特性 2-2 RSC-300 語音辨識晶片 ----- 22 2-2.1 一般的描述 2-2.2 RSC300 硬體規格 2-2.3 記憶組織 2-2.4 RSC-300 接腳的示意圖及功能敘述 2-3 設計的考慮 ----------- 29 2-3.1 8051 模組 2-3.2 8051 模組功能 2-4 錄音環境及設備的要求 ----- 30 第三章紅外線遙控原理及應用 --- 31 3-1 簡述紅外線 ----------- 31 3-1.1 紅外線的 LED 3-2 遙控紅外線 ------------- 34 3-2.1 紅外線控制器動作原理 第四章實體操作介面 --------- 38 4-1 聲控電視工作原理 ------- 38-2 -

第五章結論與檢討 ----------- 43 第六章附錄 ----------------- 46 A. 參考文獻 ------------- 46 B. 模組電路圖 ----------- 47 C. 8051 程式 ------------- 50 C-1 紅外線控制 8051 程式碼 C-2 89C2051 程式碼 - 3 -

圖目錄 圖 1-1 語音前處理之流程 ------------- 09 圖 1-2 語音模組訓練流程 --------------- 11 圖 1-3 音框與狀態的關係 --------------- 12 圖 1-4 音框與狀態的時間限制 ------------- 13 圖 1-5 音框所屬狀態的總機率走向 --------- 14 圖 1-6 語音辨識流程示意圖 ----------- 16 圖 2-1 RSC-300 電路結構 --------------- 23 圖 2-2 RSC-300 的基本結構圖 ------------- 27 圖 2-3 RSC-300 的接角圖 --------------- 27 圖 2-4 錄音干擾示意圖 ----------------- 30 圖 3-1 紅外線發射器工作方塊圖 ----------- 36 圖 3-2 紅外線接收器工作方塊圖 ----------- 36 圖 3-3 紅外線發射信號編碼格式 ----------- 37 圖 4-1 VCM 模組實體圖 --------------- 38 圖 4-2 S1 S2 S3 按鍵流程示意圖 --------- 40 圖 4-3 S4 按鍵流程示意圖 --------------- 41 圖 4-4 紅外線控制接收 發射模組 --------- 42-4 -

圖 6-B.1 類比轉數位 (ADC) 電路 ----------- 47 圖 6-B.2 數位轉類比 (DAC) 電路 ----------- 48 圖 6-B.3 紅外線模組電路 --------------- 49 圖 6-B.4 周邊電路 ----------------- 50-5 -

前言 與電腦交談 一直是人類的夢想, 隨著幾年來信號處理技術的提升, 語音辨識 (Speech-Recognition) 的應用已真正走入人們的日常生活, 聲控系統的應用也不再遙不可及, 國內的語音辨識研究, 也以投入研發一段時間, 未來隨著 3C 的發展, 聲控科技的應用儼然已經成為 21 世紀指日可待的發展目標之一 本專題實作中, 我們以語音辨識為基礎, 用 RSC-300 的語音辨識晶片做為辨識語音的核心 利用其專人專用的高辨識率, 配上紅外線遙控裝置, 達到聲控家電的目的, 而不再需以遙控器的繁多按鍵為控制介面, 取而代之是我們用平常說話的模式來驅使家電動作, 達到更符合人性化的操作介面設計為宗旨, 向前邁進 - 6 -

第一章語音辨識原理 1-1 語音辨識的發展歷史 語音辨識的研究工作大約開始於 50 年代, 當時 AT& T Bell 實驗室研發出第一個可以辨識十個英文數字的語音辨識系統 Audry 系统 60 年代, 計算機的應用推動了語音辨識的發展, 這個時期的重要成果是提出了動態規劃 (DP) 和線性預測 (LP) 分析技術, 其中後者正好地解决了語音信號產生模型的問題, 對語音辨識的發展產生了深遠的影響 70 年代, 語音辨識領域取得了突破 理論上,LP 技術得到進一步發展,DTW 技術成熟, 另外特别是提出了微小量化 (VQ) 和 HMM 理論 在實際上則實現了基礎線性預測倒頻譜和 DTW 技術的特定人士獨立語音辨識系統 80 年代, 語音辨識研究進一步著重在 HMM 模型和人工神經網路 (ANN) 的成功應用 現今則著重在 HMM 及大量與料庫的辨識應用 1-2 語音辨識的工作原理 1-2.1 聲音特徵 聲音特徵的提取與選擇是語音辨識的一個重要的功能 聲音特徵 - 7 -

的提取既是一個信息大幅度壓縮的過程, 也是信號解讀的過程, 目的是使模式分析器更好去分析判別, 由於語音信號的時變特性, 特徵值的提取必須在一小段語音信號上進行, 即進行短時變分析, 以特徵值的資料用數位的方式儲存, 以利辨識工作的進行 語音辨識系統所涉及的領域包括 : 信號處理 模式辨別 聲音處理和聽覺處理 人工智能 等等, 其實行的歩驟為 : ( 一 ) 語音前處理 ( 二 ) 語音模組訓練 ( 三 ) 語音辨識 1-2.2 語音前處理 訓練模型的第一步就是對語音作前置處理以及求出語音資料的特徵值 從取出語音的取樣值到求出特徵值, 其中包括去除靜音 從語音到求出特徵值 : 取樣, 分音框 去除靜音 對取樣資料作預強調及漢明窗處理 對音求出一組線性預估係數 (LPC) 以 LPC 求出倒頻譜函數及轉移倒頻譜函數 其中倒頻譜函數和轉移倒頻譜函數這兩組參數是之後訓練模型及辨識語音時會用到的兩組參數, 也就是我們所稱的 特徵值 - 8 -

圖 1-1 語音前處理之流程以下就對前處理的各歩驟做簡單的說明 : 去除靜音 : 是利用 能量量測法 的觀念 考慮一整個音框能量總合的平均值 由於靜音部分的能量平均值一定比有聲的部分低很多, 因此只要能找出一個門檻來區分有聲區域或是無聲區域, 然後判斷從哪一個音框開始平均能量超越預設的門檻, 就能夠判斷出有聲部分是從哪一個音框開始 預強調 : 語音訊號經過嘴唇發出之後, 會有高頻的損失, 而以麥克風所錄近的語音為了還原語音訊號, 因此會對語音訊號進行所謂的高頻補償, 而這就是預強調的概念 漢明窗 : 為了使音框的能量以頻譜分析能更為集中, 我們對每一音框乘上漢明窗, 而漢明窗的公式如下 : ( n) = 0.54 0.46 cos( 2 n /( N 1) ) h π - 9 -

倒頻譜參數 : 倒頻譜分析主要用途, 在於表示語音訊號中頻譜的波峰及細部變化的特徵值 倒頻譜一般定義為 對短時距對數頻譜取反傅利葉轉換 轉移倒頻譜參數 : 轉移倒頻譜參數是將倒頻譜參數作偏微後所得到的特徵值 線性預估係數 (LPC): 用於語音訊號的預估值可以用之前 P 個語音樣本之線性組合來預估 特徵值 : 以 LPC 求取出來的 倒頻譜參數 和 轉移倒頻譜參數, 共同組成 特徵值 如果取樣頻率 8KHz, 則長度僅僅一秒的語音內, 就包含了 8000 個取樣資料, 而一個語音資料檔案動輒往往數千 萬個取樣資料, 所以我們將整個取樣資料分成一個個的音框, 每個音框大約 20-30ms, 即 160-240 個取樣點, 不論是語音特徵值的求取或是語音辨識, 都將以音框作為語音辨識處理最基本單位 1-2.3 語音模組訓練 訓練演算法是採用維特比演算法, 來對模組進行重新評 我們可 以將語音信號以一些狀態编號來代表, 也是對觀測序列來進行狀態分 割, 再由分割後的狀態重新來評估模組的參數, 其流程圖如下圖 : - 10 -

圖 1-2 語音模組訓練流程以下我們做簡單說明 : (1) 輸入訓練語句把錄好的語音樣本輸入訓練系統, 然後將每個音框的參數求出 (2) 模組初始化將訓練語句均勻分為 N 個部分, 也就是所謂的 均切,N 為訓練模組的總狀態數個數, 分別丟入每個狀態中算出期望值與變異數矩陣, 當作狀態機率函數的初始化值 (3) 使用維特比演算法去計算相似度重新再將訓練語句丟入初始化過的訓練模組中, 再利用維特比演算法求得語音觀測序列對應於狀態的相似度, 找出最佳的狀態序列, 再經由狀態路徑回朔重新分割語音觀測序列的狀態序列, 然後利用新的分割狀態序列重新計算模組的參數 - 11 -

(4) 重新評估利用重新計算過的模組參數, 來評估模組是否收斂, 亦即觀察新的相似機率直是否小於舊的相似機率值, 如果不成立, 則重新計算模組的參數直至收斂為止 (5) 建立模組將收斂的模組參數紀錄下來, 作為之後辨識的樣本模組 1-2.3.1 音框與狀態的關係 首先我們會用 均切 的方式, 來假設音框和狀態的關係, 而狀態是比音框還要大的單位 音框和狀態的關係是需要運算的, 由於我們一開始並不知道那個音框是屬於哪個狀態, 因此我們會先把所有的音框平均的分配到每個狀態, 當成初始模型音框和狀態的關係 例如我們擁有 73 個音框且有三個狀態, 則每個狀態可以分到 73/3=24, 所以每一個狀態可以分到 24 個音框, 而多出來的音框就略去不計 狀態一狀態二狀態三 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 圖 1-3 音框與狀態的關係 - 12 -

1-2.3.2 音框和狀態配對的時間關係 音框可利用 均切 的方式來分配, 可是我們是否知道音框也是必須按照時間順序先後排列的嗎? 我們假設音框十是屬於第一個狀態, 那音框五會屬於第二個狀態嗎? 不可能! 因為狀態是必須按照時間先後順序排列的, 如圖 1-3 所示, 狀態二在時間軸上必須在狀態一之後, 而音框十也必定是在音框五之後, 所以音框十若是屬於狀態一, 表示音框一 ~ 十都會是屬於狀態一, 因此音框五也屬於狀態一, 不屬於狀態二, 這也就是音框和狀態的關係在時間上必須要遵循的限制 共 10 個音框 狀態一狀態二狀態三 T 圖 1-4 音框與狀態的時間限制 1-2.3.3 音框和模型關係的機率觀念 由前面的敘述可知, 初始模型音框和狀態的關係是以 均切 的方式來決定的, 和實際上的情形並不相符合, 於是我們有一個判斷最大機率的公式, 這個公式可以計算出音框和那個狀態比較相像 機率公式如下 : - 13 -

D i N 1 1 ( ) = (2 ) 2 1 2 T τ π exp ( ) ( ) 2 τ τ τ τ T Ri T ri Ri T Ri 這個式子叫做 多變數的高斯機率密度函數, 我們可以利用這個式子來求出每個音框相對於每個狀態的相似程度 式子中各個參數的定義如下 : N : 特徵向量的維度 τ : 待測語音或訓練語音的特徵向量 T τ : 模型中該狀態遍第 i 個混合數 (mixtrure) 的期望值 Ri : 為模型中該狀態第一個混合數的協方差矩陣 (convariance- Ri matrix) 這個式子可以求出音框對狀態的相似度, 所以這個式子就可以成為我們判斷音框和狀態的關係, 我們具備的機率以及時間限制兩個觀念以後, 最後一個步驟就是找出音框是屬於那一個狀態的關係 : 狀態 3 2 1 P 總機率 1 2 3 4 5 6 音框 圖 1-5 音框所屬狀態的總機率走向圖 1-5 分別代表不同的音框對狀態的關係, 但正確音框所屬狀態只有一種, 因此要判斷最正確的結果, 就必須依據前面的 " 機率 " 以及 " - 14 -

時間限制 " 兩個觀念來解決 機率的部分, 可以應用機率公式來求得音框對狀態的相似值, 機率值越高表示該音框對於該狀態的相似度越高, 如果將整個範圍由音框擴展到整個語音, 並考慮整段語音對所有狀態的相似度, 則可以找出一組音框對狀態的關係, 使全部音框對狀態的 總 機率值為最高, 而機率最高的這條路徑, 就是我們所要求取最後的音框和狀態的關係 以圖 1-4 為例在箭頭的最後有一個 P, 這個 P 的意思表示這條路徑的總機率值, 而所謂的總機率值就是路徑內所有個別機率值相加的總合, 其計算方法為 : 總機率值 = 音框 1 對狀態 1 的相似機率 + 音框 2 對狀態 1 的相似機率 + 音框 3 對狀態 2 的相似機率 + 音框 4 對狀態 2 的相似機率 + 音框 5 狀態 3 的相似機率 + 音框 6 對狀態 3 的相似機率 當然我們可以在圖上畫出很多不同條的路徑, 但我們所要的結果, 就是 總機率值最大 的那一條路徑 1-2.4 語音辨識 實際上, 我們所發出的聲音是屬於類比信號, 在每一個時間點都會有聲音的能量, 當我們利用電腦來記憶時, 所需要的記憶體太過於龐大, 所以電腦會利用取樣 (Sampling) 的方式, 每隔一段時間取出一個聲音的樣本, 以數位的方式儲存 辨識方法其實就跟認人一樣 我們是如何一眼就認出自己的親戚朋友? 主要的原因是在於我們已經記 - 15 -

住每個人的 特徵, 例如 : 臉圓 小眼睛 長頭髮 等等, 而把所有的特徵組合起來, 自然能夠讓我們輕易的認出對方, 所以我們就必須用讓電腦程式或是電子套件模組來模擬 " 辨識 " 為了要讓辨識更快速 精確, 我們需提供一組由 特徵值 所組成的 模型 有了模型之後, 電子模組就能把各特徵值模型和你要辨識的的語音做比對, 找出你所要辨識的語音, 最像那個模型即為辨識的結果 例如 : 如果電腦具有辨識 0 到 9 十個數字的能力, 那就要先找出 0 到 9 這十個數字的特徵, 並利用這些特徵組成可以代表這十個數字的模型, 而當有一個未知的語音資料被錄到電腦後 把這個未知語音資料和這十個模型去比對, 看看未知的語音和這十個中的那一個模型的特徵值比較像 如果電腦辨認出未知的語料的特徵值和 5 的模型的特徵值最相像, 電腦就會判定此未知的語音資料是 5 圖 1-6 語音辨識流程示意圖 - 16 -

1-2.4.1 辨識的方法 接下來要做的, 就是把待測語音資料, 和所有的模型去比對, 看看待測語音資料和哪一個模型比較像 舉個例子來說, 如果使用者隨意說出 0~9 之中任一個數字, 將這個語料 ( 語音資料 ) 和 0~9 十個語音模型去作模型的比對, 也就是分別求出待測語音對十個模型的相似度 ( 機率值 ) 再找出相似度最高的, 來判斷使用者說出哪一個數字, 而在辨識的過程中最大的總機率值代表著是待測語音和該模型的相似程度 舉例來說, 如果待測語料和 0 到 9 的機率值如下圖所示, 我們可以發現待測語料對 5 的模型相似度最高( 機機率值最大 ), 則模組就會判定語料是 5 模型 0-324 模型 1 3268 模型 2 624 模型 3 1425 模型 4 2415 模型 5 3546 模型 6 323 模型 7 564 模型 8 2341 如果使用者說出一個不存在於語料庫的語音資料, 那麼不管電腦如何辨識也辨識不出來, 也就是說, 語音資料庫中沒有的部分, 電腦是無法辨識的 - 17 -

1-2.5 語者獨立和語者相依的差異 訓練者做語音訓練, 在辨識時只有辨識此訓練者的語音時, 具有高辨識率, 若以其他人的語音來辨識時, 辨識率就會下降, 像這種只適用於單一語者的語音辨識系統, 就稱為 語者相依 的系統 語者相依的辨識系統, 原因在於所參加訓練的語音資料是來自很少數的語者, 或是只有一個語者, 因此所訓練出來的模型也只能適用於參加訓練的少數人 語者相依的特性就在於 : 只有少數語者在使用辨識系統時可以維持高辨識率, 然而語者相依的模型訓練容易, 而且只要少數的語料就能夠訓練, 和語者相依想反的是語者獨立 所謂的語者獨立辨識系統, 就是這種系統可以辨識出所有人的語音, 也就是不論誰來使用辨識系統, 辨識率都可以達到一定的水準 雖說語者獨立的模型能夠符合大多數人的需求, 但是語者獨立的模型需要很語者的語音資料一起加入訓練, 而於要收集許多人的語料並不容易, 因此語者獨立的模型在訓練上並不容易 1-3 語音辨識實例說明 設狀態數為三個, 一個音框有 240 個取樣點 相信這些都是你 不陌生的詞句, 但你是否曾經懷疑過狀態數為何要設三個或四個或五 個, 一個音框為何要取 240 個取樣點而不是任意去取一個數, 等等類 - 18 -

似的疑問我們利用下列的實例來說明 實例一 : 如果我們要改變狀態數時, 可以做以下的變化 (1) 假設我們把注音符號的子音當成是四個狀態, 母音當成是五個狀態時那會有時麼樣的結果呢? 辨識字句 : 我愛崑山科技大學電機系 我 ㄨㄛ : ㄨ為子音, ㄛ為母音, 其狀態數為 4+5=9 愛 ㄞ : ㄞ為子音, 其狀態數為 4 崑 ㄎㄨㄣ : ㄎ為子音, ㄨㄣ為母音, 其狀態數為 4+5=9 山 ㄕㄢ : ㄕ為子音, ㄢ為母音, 其狀態數為 4+5=9 科 ㄎㄜ : ㄎ為子音, ㄜ為母音, 其狀態數為 4+5=9 技 ㄐ一 : ㄐ為子音, ㄧ為母音, 其狀態數為 4+5=9 大 ㄉㄚ : ㄉ為子音, ㄚ為母音, 其狀態數為 4+5=9 學 ㄒㄩㄝ : ㄒ為子音, ㄩㄝ為母音, 其狀態數為 4+5=9 電 ㄉㄧㄢ : ㄉ為子音, ㄧㄢ為母音, 其狀態數為 4+5=9 機 ㄐㄧ : ㄐ為子音, ㄧ為母音, 其狀態數為 4+5=9 系 ㄒㄧ : ㄒ為子音, ㄧ為母音, 其狀態數為 4+5=9 我們可發現狀態數為 9 的有 : 我 崑 山 科 技 大 學 電 機 系 4 的有 : 愛 - 19 -

所以當我們把狀態數設定在 9 時只可辨識出 我 崑 山 科 技 大 學 電 機 系 設定在 4 時只可辨識出 愛 如果我們用這種子母音方法要辨識不同的語音就要用不同狀態數, 在現實的考量當中是不適合的, 所以我們通常是把一段語音分成 3 4 5 或更多狀態數, 而不去在意它的子母音, 不過在設計狀態數時也不能過多, 太多的狀態數會造成辨識上時間的延長, 適當的狀態數是必要的, 通常我們是設定為 3 是比較恰當 實例二 : 改變音框的取樣點數目 假設我們把同一個音框的取樣點分別取 80 240 720 那會有怎 樣的結果呢? 音框取樣點 語料 1 語料 2 語料 3 80 99% 100% 100% 240 99% 100% 100% 720 95% 98% 100% 由此表格我們可以發現並不是取樣數越多就越好, 而是要看語料的內 容而定, 也要考慮到取樣的點數越多, 處理的速度就越慢, 有時可能 會造成辨識的錯誤, 透過整理發現取樣點在 240 時辨識率是最高的 - 20 -

第二章聲控系統 2-1 VCM 聲控模組介紹 本專題所使用的是語音辨識聲控系統 ---- 聲控模組 ( 以下簡稱 VCM), 是由單晶片 8051 控制語音辨識, 使用辨識晶片 RSC-300, 而 8051 方面只用 4 條輸入輸出線便可以用來控制聲控晶片動作, 系統方面採用模組化設計, 擴充性良好, 本身控制板可以適合不同的硬體工作平台, 整套系統可做跨平台聲控應用, 可由電路結合來下命令到 VCM 做聲音辨識處理 2-1.1 VCM 聲控模組特性 系統可以自行設計且獨立操作型特定語者聲控系統, 自由性高 VCM 模組是由 89C2051 及聲控晶片 RSC-364, 來進行通訊連結, 而 89C2051 只用 4 條輸入輸出線來控制語音辨識晶片, 在進行辨識時如果是單一人的辨識, 不管是國 台語或是英語都可以進行辨識, 而且辨識率達 95% 以上, 當辨識語料時系統會自動偵測輸入的語料和辨識的語料符不符, 語音資料會被壓縮且而由系統說出來辨認的正確結果, 輸入語料時會有英文的語音提示語做語音動作引導, 而輸入的參數及語音參考樣本一旦輸入後資料不經改變可以長久保存 系統是以模組的設計為主, 擴充性佳, 適合不同的工作平台且具獨立操作, - 21 -

不必倚靠 PC 來動作, 存有 10 組語音辨識可以直接作辨識, 當你覺 得 10 組太少時系統也可支援到 60 組, 使用時需要外加 +5V 電源, 內建 4 只按鍵開關及 RS232 串列通訊介面 2-2 RSC-300 語音辨識晶片 2-2.1 一般的描述 RSC 300/364 屬於高性能的元件, 是綜合高水準為特色的 8 bit 微處理器, 隨著高精密度, 低成本語音識別的應用,RSC 300/364 的準確性 反應時間快速和低成本且多功能的特色 RSC 300/364 的設計目的, 在於降低系統性能提高時, 花費時的時間總數, 透過包括麥克風信號的擴大 數據的轉換 識別和綜合功能性, 並且在 ROM 儲存器中單晶片有一 CPU 核心, 以達到功率的轉換 因此,RSC-300 能在 14.32 MHz 的短暫時間內提供最高的效能, 使用 RSC-300 建立應用方面, 需要電子電路學, 軟體代碼和講話 / 音樂數據文件 ( 語言學 ") 的基礎, 對於 RSC 300 的建構設計程式人員來說, 都是很重要的技能 因為他們可以描述晶片上的物理性質, 以及印製電路板版面的編排和其他設計考量 - 22 -

2-2.2 RSC 300 硬體內部結構及規格 RSC-300 是一高階且完善的晶片兼具 : 圖 2-1 RSC-300 電路結構 - 23 -

類比 / 數位轉換器 數位 / 類比轉換器和一個脈衝調幅器, 一個麥可風前置擴大機 8-bit RISC 微處理機 On-chip ROM, 暫存器 RAM(448bytes), 資料 ROM(2Kbytes) 和滿足 off-chip RAM 或 ROM 之功能 8 bit 的處理器能直接存取 448 on-chip 通用暫存器 (RAM) 的容量, 和 32 外加的特殊函數暫存器 (SFRS) 這些存取暫存器是完全相呼應的, 分別是算術和邏輯操作, 兩個雙向的接腳提供 16 個通用 I/O 碼, 與外部設備進行訊息連結 RSC 300/364 有一高頻率振盪 (14.32 MHz) 和一低頻振盪器 (32.768Hz) 適於時間計數的應用 處理器的觸發在可以選擇基準中的兩振盪器來處理 傳遞技術的代碼則需要使用 14.32MHz 的震盪器來觸發 外部則由一個廉價的電容式麥克風直接連接 RSC 300/364 的話筒輸入端 之前敘述的前置擴大器, 則把極小的話筒信號做類比對數位轉換 (ADC) 轉化成適當的取樣訊號 RSC 300/364 用途便是把被放大的類比語音信號轉成數字型式, RSC-300 有 8 條資料線和 16 條位址線, 其中聯繫控制信號的有 (RDC RDD WRC WRD XML XMH) 適合聯接於外部存儲器 - 24 -

2-2.3 記憶組織 (Memory Organization) 在 RSC-300 晶片的架構, 其記憶組織, 包含了以下相關元件 : (1) 內部的 ROM (Internal Menmory) 內部的是包含有組織的兩組 32 Kbytes ROM, 兩者皆屬代碼空間 (2) 外部存儲器 (External Menmory) RSC 300 也考慮到訊號的長度, 並且透過使用外部存儲器擴大程式功能性 有 30 個 pin 在 RSC 300 的外部 ROM 或者 RAM 之間提供一個界面 (3) 記憶地圖 (Memory Map) RSC 300 有 3 個位址空間..代碼空間 數據空間和暫存空間 代碼空間通常是 ROM 數據空間可能是 ROM RAM 快閃式記憶體或者其他讀 / 寫存儲器 暫存空間局限於在 chip 上的 SRAM, 為了使用各個空間來區分指令, 執行代碼必須儲存於代碼空間 ; 表格和其他數據皆可以儲存於代碼空間或者數據空間 (4) 通用 I/O (General Purpose I/O) RSC 300 有 16 個通用 I/O pin(p0.0-p0.7,p1.0-p1.7) 每個 pin 可能被作為輸入編輯程式的少數推疊指令 (5) 中斷處理器 (Interrupts) - 25 -

RSC-300 是完全使用靜態的處理器當核心, 處理器可以透過除去時脈源的動作被停止 在電源選定後, 中斷處理器可能被分割成為為了限制功率損耗的指令, 中斷處理器必須選擇在 0 和 7 的狀態之中等待, 等待狀態插入後, 所有讀取或寫入的資料, 將會儲存於暫存器的 RAM 位址. (6) 定時器和計數器 (Timers and Counters) RSC-300 的獨立的振盪器, 提供小數點後兩位的內部的定時器 由於一個柜台在讀的中間改變的反對的預防可讀 (7) 類比輸出 (Analog Output) RSC-300 為類比輸出, 其中提供兩種單獨的形式 DAC( 類比轉數位 : 輸出提供通用 10 位元的類比輸出可用於語音輸出 ) 包括音頻的放大器或者可用於需要類比波形的其他地方 很多語音應用可能只適用於少數的發音者, 當使用 RSC-300 的脈寬調製器 (PWM) 輸出替代 DAC 的輸出, 便可以使用於多人的語音錄製 - 26 -

圖 2-2 RSC-300 的基本結構圖 2-2.4 RSC-300 接腳的示意圖及功能敘述 圖 2-3 RSC-300 的接角圖 - 27 -

名稱 Die Pad QFP Pin 描述 I/O A[15:0] 20-27,30-37 1-8,11-18 外部記憶位址匯流排 O AIN0 5 52 類比式輸入, 低增益 I ( 範圍 AGND to AVDD/2) AIN1 4 51 類比式輸入, 高增益 (AIN0 I 8X 輸入振幅, 同樣範圍 ) AOFE1 72 49 第一輸出階前置放大器 O AOFE2 6 53 第二輸出階前置放大器 O AOFE3 3 51 第三輸出階前置放大器 O AIFE1 71 48 第一輸出階前置放大器 I AIFE2 1 49 第二輸出階前置放大器 I NC 10,11,43,44 無連結 - PWM0 8 55 輸出脈寬調變器 O DACOUT 2 50 類比式輸出 ( 非緩衝區 ) O D[7:0] 12-19 57-64 外部資料匯流排 I/O Vss 7,28,62 9,39,54 Vss - PDN 67 44 Power Down. 當電壓降變 O 高態. P1[7:0],P0[7:0] 43-52,53-60 22-29,30-37 通用阜 I/O. 接腳 P0.0 能充 I/O 當外部的中斷輸入. 所有的 I/O 接腳可以輸入使用 /RDC 63 40 外部字元碼讀選通 O /RDD 65 42 外部資料讀選通 O /RESET 42 21 重置 I /TE1 or PWM1 9 56 測試模式或脈寬調變器 IorO 輸出 1( 多工 ) VREF 70 47 參考電壓 =Vdd/2 或 Vdd/4 - 依賴軟體更改 V DD 29,61 10,38 供應電壓 - /WRC 64 41 外部字元碼寫入 O /WRD 66 43 外部資料寫入 O /XMH 68 45 外部高記憶體生效 ( 低態 ) I /XML 69 46 外部低記憶體生效 ( 低態 ) I XO1 40 19 輸出震盪器 1( 高頻 ) O XI1 41 20 輸入震盪器 1 I XO2 38 NA 輸出震盪器 2(32768Hz) O XI2 39 NA 輸入震盪器 2 I - 28 -

2-3 設計的考慮 許多原因可能降低語音識別精確度 使精確性下降, 最普遍的問題便是噪音..在麥克風的系統內的雜音和聲音的噪音的兩種噪音 因此選擇一隻好的麥克風是很重要的, 在晶片上結合一條正確的音頻放大電路, 可以產生良好的接地及排除類比系統的干擾, 這將會提高辨識的成功率 2-3.1 8051 模組 以最新 ISP (In System Programming) 技術設計的 8051 相容單晶片內建程式載入程式可以由串列埠連接 PC 而下載程式, 快速, 方便程式一旦下載後程式碼永久保存在 LO51 內, 可下載程式碼容量 : 64 KB, 程式碼下載速度快 :1KB->1.2 秒 /4 KB->4.2 秒 /32 KB->33 秒 /64 KB->66 秒,8051 P0 P1 P2 P3 完全可以做自由的 I/O 控制執行速度最快 40 MHz, 內部下載程式碼最大容量為 64 KB 內部 RAM 512 位元組, 可以外接 64 KB EPROM 做程式碼執行及 64 KB 資料容量,P0 P1 P2 P3 4 組 I/O 埠,3 組 16 位元計時計數器,1 組全雙工串列埠,6 組中斷源, 內建電源管裡工作模式, 指令碼 8051 完全相容 - 29 -

2-3.2 8051 模組功能 此 8051 單晶片, 是連接聲控模組和紅外線模組之間的橋樑, 在 系統中是負責將 RSC-300 語音辨識後的結果, 經過程式設計相對應 的紅外線編碼, 來送出紅外線信號, 再由紅外線發射模組來發射信 號給電視盒接收器 2-4 錄音環境及設備的要求 錄音的環境直接影響到錄音品質的好壞, 如果錄音品質差的語料 來訓練或辨識, 對於辨識率都有一定程度的影響 因此在錄音的時 候, 對於錄音的環境要有一定的要求 首先不要在一個吵雜的環境下 錄音, 因為這會讓你的聲音受到太多了干擾, 包含有其他人說話, 或 是放音樂等等, 都要盡量避免 語音輸入 受干擾後不確的語音資訊 雜訊的干擾 圖 2-4 錄音干擾示意圖 - 30 -

第三章紅外線遙控原理及應用 3-1 簡述紅外線 目前, 以無線應用的領域來說可以說是相當地廣泛, 就以我們生活中幾乎不可缺少的電視機為例, 現在已經難得看到未配備紅外線遙控器的電視機了, 再者, 目前我們所收視的三台, 也都是透過無線電波傳輸的, 還有汽車或是機車的遙控防盜器也是 ; 而無線 (Cordless) 通訊 呼叫器 行動電話 等通訊設備, 也同樣是無線的產品 什麼是紅外線? 紅外線是光的一種, 所以它也同樣具有光的特性 例如 : 它無法穿越不透光的物體, 生活中我們看不到紅外線, 並不表示它不存在, 實際上, 在我們生活的四週即充斥著紅外線光, 它可能是從電燈發出, 也可能太陽光發出, 使用者並不需要使用執照即可以使用紅外線 例如, 在電視遙控器上的低速紅外線 (Low IR) 應用己有相當長的一段時間了, 其他像是錄影機 音響等遙控器也是, 電視遙控器將特定的訊號編碼, 然後透過紅外線通訊技術將編碼送出 ( 通常你可以看到遙控器的訊號燈亮了一下 ), 而設置在電視上的紅外線接收器收到編碼之後, 將其進行解碼而得到原來的訊號 低速紅外線是指其傳輸速率在每秒 115.2Kbits 者而言, 它適用於傳送簡短的訊息 文字或是檔案 有低速紅外線當然也有高速紅外線 - 31 -

(Fast IR), 它是指傳輸速率在每秒 1 或是 4Mbits 者而言, 其他更高傳輸速率則仍在發展中 如果運用在網路上呢? 對於網路通訊而言, 高速紅外線可以說是其基礎, 包括檔案傳輸 區域網路連結甚至是多媒體傳輸, 紅外線網路適用於 例如 : 教室的環境或是小型 封閉的區域 對於講究資訊保全的人而言, 紅外線網路或許是一個不錯的選擇, 因其無法穿透牆壁傳輸, 位在建築物之外的人將不可能直接截取到散佈在建築物內的紅外線訊號 但相對地, 這也構成其缺點 紅外線傳輸極容易受到牆壁的阻礙 另一方面, 紅外線也是一種低成本的無線傳輸形式 視線紅外線 (Line-Of-Sight) 以有如雷射線般的直線形態傳輸資料, 因為其運動是以直線前進, 如果傳輸的路途中沒有任何的障礙物, 則資料的傳輸可以說相當快速且具有效率的, 因為紅外線也是光的一種, 所以它前進的速度為光速, 但是就像太陽光一樣, 紅外線不能穿透牆壁或是大型物體, 所以, 在資料收 發的兩端必須相互對準 ( 即可以看得見對方 ) 才能進行通訊, 這對行動通訊可能常常移動位置的情形而言, 是非常不利的, 而且容易受到下雨 下雪或是霧氣的干擾 相對於視線紅外線直線前進的運動形態, 散射式紅外線 (Diffused) 就是一種非直接傳輸的方式 散射式紅外線在一定區域 - 32 -

中藉著天花板 牆壁及其他物體之表面, 以擴散反射的方式達成傳送資料的目的, 而接收端則對收集到的訊號進行解譯 以散射式紅外線進行傳輸的最大好處在於, 收送的兩端不必如視線紅外線要正確地對準, 但是就因為紅外線是散射形式, 所以傳輸範圍及效能將受到更大的限制 3-1.1 紅外線的 LED 發光二極體 (Light Emitting Diode;LED) 是由半導體材料所製成之光電元件, 元件具有兩個電極端子, 在端子間施加電壓, 通入極小的電流便可發光 ; 也就是說 LED 的發光原理是施加電壓於 AlGaAs ( 砷化鋁鎵 ) AlGaInP( 磷化鋁銦鎵 ) 及 GaInN( 氮化銦鎵 ) 等化合物半導體上, 產品經封裝後耐震性佳, 元件壽命長可達十萬小時以上, 比壽命約一千小時的鎢絲燈泡或約五千小時的日光燈高出甚多 任何發光二極體所發出的光, 都是依各材料的不同, 其發出的波長亦不相同 產品依發光波長的不同和人眼感受的因素, 可分為不可見光 ( 紅外線 )LED 和可見光 LED 由於其發光原理 結構等皆與傳統鎢絲燈泡不同, 具有體積小 可大量生產 高可靠度 可視性極佳 耐衝撞 顏色多 容易配合應用上的需求製成極小或陣列式大型元件等優點, 適合做室內或室外大型顯示螢幕 ; 加上沒有燈絲, 耗電量小, 無須暖燈時間, 產品反應速度快, 故可廣泛應用於汽車 通訊 消費 - 33 -

性電子及工業儀表等各種不同領域中 一般亮度 LED 因受限於新應用領域的開拓, 市場成長幅度已趨平緩, 但是高亮度 LED 用途廣泛, 具有取代現有照明光源的特性, 只是目前生產白光所使用的藍光, 在專利權保護下, 產品價格較高, 且白光僅有 15 流明 / 瓦的發光效率, 較一般照明器材為低, 以致尚難取代, 但在未來將是頗富成長潛力的產品 在個人電腦 網路通訊 行動電話 呼叫器 數位相機, 及彩色影像之多媒體資料傳輸等電子產品快速發展下, 除促使 LED 光源需求量近年急增外, 亦使得以高功率紅外光 LED 製作之 IrDA 紅外線傳輸模組, 成為此等多項產品之基本配備, 未來成長潛力仍佳 3-2 遙控紅外線 在語音辨識上的應用, 說出的語料被經過辨識無誤之後, 被傳送到控制紅外線的晶片時, 經過編碼之後, 傳送到電視的接收器完成所有動作, 然而動作卻沒有如此的簡單 語料再經過辨識時的動作前面已經陳述過了, 在此不在重述 當控制紅外線的晶片經收到正確無誤的訊號時, 晶片會將一段訊號進行編碼結合載波電路的載波信號 ( 在台灣一般使用 38KHz), 在經過功率放大器提升功率, 去推動紅外線發射二極體, 將紅外線的訊號加上載波的訊號一起傳送出去, 如此一來就完成了傳輸動作 - 34 -

在現今的家電產品中都是有紅外線的功能, 例如電視機 電風扇 汽車防盜器 不勝枚舉, 都是以紅外線控制的方式來進行操作, 其控制的遙控器上, 有其基本功能的按鍵, 也有其複雜的按鍵 而我們將以電視遙控器, 來當作例子說明, 以致於進一步分析其發射的波形, 並利用 8051 將其信號做解碼, 經由 RS232 介面傳送回 PC 端來觀察其數位化的資料 3-2.1 紅外線控制器動作原理 紅外線控制器顧名思義就是利用紅外線來當傳遞資料的工具, 我們是以紅外線發光 LED 發射波長 940mm 的不可見光, 來傳送我們所需要的資料, 整個控制器的部分可分為發射端跟接受端, 發射端是由紅外線發射源 LED, 送出紅外線控制信號, 這些信號經由紅外線接收模組接收端接收近來, 並對其接收的信號進行解碼而做出這個信號所代表的意思, 而後完成遙控的功能 假設我們按下某一按鍵後, 遙控器上的控制晶片 (8051) 便進行編碼產生一組控制碼然後在結合載波電路的載波信號 ( 在台灣一般都是以 38Hz) 而完成信號, 由於此時的信號十分微弱, 所以經過一個放大器提升功率而推對二極體發射紅外線, 將紅外線發射發射出去, 所要發射的控制碼必須加上載波才能使信號的傳送距離加長, 一般來說遙控器有效距離都是 7 公尺 - 35 -

圖 3-1 紅外線發射器工作方塊圖接下來我們來看看紅外線接收到信號時它如何分辨其信號是否正確或完整性, 其主要控制元件為紅外線接收模組, 其內部含有高頻的濾波電路, 專門用來濾除紅外線所加上的濾波合成信號, 就是濾除載波信號 38Hz 而辨識最原本的由控制器所送出的控制信號 當紅外線合成的信號進入紅外線接收模組, 其輸出端便可得到原本的數位控制編碼, 然後經過單晶片解碼程式進行解碼, 便可得知你所按下的是哪一個按鍵的編碼, 而進行相對的控制處理, 完成紅外線遙控的動作 圖 3-2 紅外線接收器工作方塊圖 由於每家廠商的製造出來的遙控器不一定一樣, 即使是使用相同 的控制晶片, 也會做不一樣的編碼設計, 以免遙控時受到干擾, 以下 - 36 -

用電視遙控器為例子來說明紅外線編碼的格式 : 紅外線編碼由以下 3 個部分組成 : 1 前導信號 2 編碼資料 3 結束信號 圖 3-3 紅外線發射信號編碼格式例如按下遙控器的電源時, 則會送出以下的 4 位元組出去 : 40 BF 12 ED" 其中 40 BF" 為廠商的固定編碼, 12 ED" 則為電源按鍵編碼 而其中的各個編碼是以波寬信號來調變, 低電位 0.8ms 加上高電位 0.4ms 則編碼為 0", 低電位 0.8ms 加上高電位 1.6ms 則編碼為 1", 然後在結合載波信號可以增加發射距離 - 37 -

第四章聲控電視的操作流程 4-1 實體操作介面 圖 4-1 VCM 模組實體圖 - 38 -

聲控模組實體操作介面說明 : 按鍵說明 : S1: 為訓練語音樣本, 一次訓練一組, 此聲控電視模組可儲存十個欲辨識的語料組 ( 開 關 往返 大聲 小聲 台視 中視 華視 二十二台 二十三台 ) 訓練的語料會儲存在 FLASH 的記憶晶片中永不消失 S2: 修改已儲存在記憶晶片中的語音參考語料 先按 S3 聆聽系統已存在的某組語音內容 再按 S2 則該組內容會先被刪除, 再執行語音輸入訓練過程來建立新的語音參考樣本 若在語音輸入訓練過程中失敗, 可以使用 S1 鍵來輸入新的語音樣本 S3: 聽取已正確存入記憶體的辨識語料 每按一次即向後一個語料播放從第零組播放至第九組共十組, 重複循環 S4: 執行辨識語音 - 39 -

圖 4-2 S1 S2 S3 按鍵流程示意圖 - 40 -

圖 4-3 S4 按鍵流程示意圖 - 41 -

圖 4-4 紅外線控制接收 發射模組 - 42 -

第五章結論與檢討 起初, 我們對於語音辨識的領域有點陌生, 因為我們從沒有接觸這類的領域, 只有在新聞媒體上偶而看到此類的專題報導, 感覺是項很先進的技術, 但在好奇心的驅使下, 到處尋找這方面的資訊, 從圖書館和網際網路上我們只找到些微的資料, 無意間, 在一個名為 " 偉克多媒體工作室 " 的網頁中, 看到有關於聲控的實體模組套件, 這便成為我們研究的方向 此畢業專題是利用以 RSC-300 為核心的聲控模組, 經由語音辨識控制紅外線的發射來控制電視盒的動作, 取代了現有的遙控器, 我們經由事先錄製欲辨識的語料, 將其儲存在記憶體中, 當我們需要聲音控制時按下紅外線模組上的 S4 辨識按鍵, 說出欲辨識的語音, 透過 89C2051 控制 RSC-300 辨識未知語料和已儲存的模型 如果辨識出相對應的語料, 將會把辨識出來的結果傳送到紅外線 8051 控制模組上, 經紅外線模組將此結果和對應遙控按鍵的信號, 轉換成紅外線的編碼, 然後傳送到紅外線發射的模組發射紅外線, 透過電視盒上的紅外線接收器進行解碼, 進而控制電視遙控的動作, 來達到我們所要求的動作 初期, 我們對於語音的一些專有名詞及原理, 如 : 均切 倒頻譜函數 轉倒頻譜函數 預強調 等等, 都還不清楚的情況下, 在大 - 43 -

家多次的討論中, 漸漸地有所了解, 在實作的過程中, 讓我們學到許多有關於語音辦識的先前工作, 以及紅外線遙控的原理, 進而結合語音辨識的高辨識率和紅外線遙控的便捷性, 使我們能更方便的來控制具有紅外線遙控功能的任何家用電器產品 由於此 RSC-300 語音辨識晶片屬於專人專用的語音辨識晶片, 侷限於錄音語料與辨識語料出自於同一個人時, 才能達到高辨識率, 一旦有未知語料要辨識, 可是記憶體中並沒有該錄音者先前所錄製儲存欲辨識的語料, 這時辨識率將會降低甚至不能辨識, 所以日後如果要讓多人都可以辨識, 且達到高辨識率, 那勢必在系統上作進一步的修改, 才能符合多人使用而且便利的實用性 雖然我們已經把此專題達到所要目標, 而且也把語音辨識數目擴展成為十組 其中錄音時所碰到的困難, 例如 : 不知道錄音過程中環境的週遭靜音的要求, 一開始還以為是模組的損壞, 還在想說要如何把模組進一步的修改的同時, 陸續經由多次錄製的過程才知道, 原來錄音環境的要求跟錄音品質的優劣, 是有很大的關聯性, 當然陸續還是有許多的問題接踵而來, 不過我們都盡可能的去克服, 儘管模組本身有小小的問題 如 : 模組容易過熱, 導致辨識過程中會失敗, 但經過重新啟動, 便可恢復功能 且錄音離麥克風太近或太遠, 也會造成錄語料和辨識時的錯誤, 按鍵有時也會因為模組過熱的緣故而失去作 - 44 -

用 也許模組本身不盡理想, 不過展現出來的語音辨識功能有達到先前預期的結果, 即使這些小瑕疵, 依舊不會影響到模組的正常運作 在擴充的方面, 我們已經將原先的五組模組擴充到十組, 且對於單一個錄音者的辨識率可以達到 95% 此外, 挑選一支好的麥克風有助於語音品質的擷取, 因為當語音通過麥克風時, 會有 通道效應 的產生 也就是說, 語音的資料會因為麥克風劣質的線路而降低錄音品質, 因此挑選一支好的麥克風是必要的, 而我們使用的模組, 電路板上所連接的是電容式麥克風, 錄音品質並不是最好, 但電容式麥克風為無指向式, 且體積小, 在功能和品質的衡量下, 電容式麥克風實為最佳的選擇, 當然這也是此聲控模組可以改進的方向 - 45 -

第六章附錄 A. 參考文獻 書籍名稱 作者 出版商 出版日期 Mcs-8051 入門與實習 陳益良唐和誠彭惠美 高立圖書有限公司 85 02 沈庸超 聲霸卡之應用與語音辨識 許志興 旗標出版有限公司 83 11 Visual Basic 與語音辨識 楊鎮光 松崗資訊股份有限公司 91 06 單晶片 8051 實作入門專題製作篇 陳明熒 文魁資訊股份有限公司 92.09-46 -

B. 模組電路圖 圖 6-B.1 類比轉數位 (ADC) 電路 - 47 -

圖 6-B.2 數位轉類比 (DAC) 電路 - 48 -

圖 6-B.3 紅外線模組電路 - 49 -

圖 6-B.4 周邊電路 - 50 -

C. 8051 程式 C-1 聲控紅外線程式碼 ;------------------------------------------------------ CLIS EQU 'l' ;LISTEN CODE CREC EQU 'r' ;RECOG CODE CTR EQU 't' ;TRAIN CODE CMOD EQU 'm' ;MODIFY CODE ; KEYS... K1 REG P2.4 ; K1: TRAIN K2 REG P2.5 ; K2: MODIFY K3 REG P2.6 ; K3: LISTEN K4 REG P2.7 ; K4: RECOG WLED REG P3.7 OUT REG P1.0 SPK REG P3.4 ANS EQU 30H ; RECOG ANSWER ;--------------------------------- ORG 0H JMP BEGIN ;----------------------------- BEGIN: CLR OUT ; IR OFF CALL INIT_RS232 CALL LED_BL CALL BZ LOOP: JB K1,L1 JNB K1,$ ; K1 KEYED... MOV A,#CTR CALL TX_CHAR CALL LED_BL JMP LOOP - 51 -

;... L1: JB K2,L2 JNB K2,$ ; K2 KEYED... MOV A,#CMOD CALL TX_CHAR CALL LED_BL JMP LOOP ;... L2: JB K3,L3 ; JNB K3,$ ; K3 KEYED... MOV A,#CLIS ; SEND LISTEN COMMAND CALL TX_CHAR CALL LED_BL JMP LOOP ;... L3: JB K4,L4 ; K4 KEYED... CALL RECOG CALL LED_BL JMP LOOP ;... L4: JMP LOOP ;------------------------------------ ; DELAY R5*0.1 ms DEL: MOV R5,#1 DELAY1: MOV R6,#2 $1: MOV R7,#19 $2: DJNZ R7,$2 DJNZ R6,$1 DJNZ R5,DELAY1 ;--------------------------------- BZ: - 52 -

MOV R6,#0 B1: CALL DE1 CPL SPK DJNZ R6,B1 ;-------------------- DE1: MOV R7,#180 DEX: NOP DJNZ R7,DEX ;---------------------------------------------------------------- HI: CLR OUT CALL DE ;------------------- LO: SETB OUT CALL DE ;------------------------ LO8: SETB OUT MOV R4,#8 CALL DE ;------------------------ DE: $1: CALL DEL DJNZ R4,$1 ;-------------------------------------------------------------------------- ; vgear TV POWER KEY ;tlen=35 ;DHI[i]=45, 5, 16, 16, 5, 6, 5, 5, 17, 16, 17, 5, 17, 5, 17, 16, 5, 5, ; 16, 6, 5, 16, 6, 5, 5, 16, 5, 17, 16, 5, 16, 17, 16, 400, 22, ;DLO[i]=89, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, ; 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 7, 6, 6, 6, 91, ; MODIFY... - 53 -

; len=1+32+1+1 ;------------------------------ ;HID: DB 5, 16, 16, 5, 6, 5, 5, 17, 16, 17, 5, 17, 5, 17, 16, 5, 5, ; DB 16, 6, 5, 16, 6, 5, 5, 16, 5, 17, 16, 5, 16, 17, 16, 400, 22, HID: DB 5, 16, 16, 5, 6, 5, 5, 17, 16, 17, 5, 17, 5, 17, 16, 5, 5, 16, 6, 5, 16, 6, 5, 5, 16, 5, 17, 16, 5, 16, 17, 16, 400, 22, HID1: DB 5, 16, 16, 5, 6, 5, 5, 17, 16, 17, 5, 17, 5, 17, 16, 5, 5, 16, 6, 5, 16, 6, 5, 5, 16, 5, 17, 16, 5, 16, 17, 16, 400, 22, HID2: DB 6, 16, 16, 5, 5, 5, 5, 16, 17, 16, 5, 16, 5, 16, 16, 6, 5, 16, 5, 5, 5, 5, 5, 5, 17, 5, 17, 16, 16, 16, 17, 16, 399, 22, HID3: DB 5, 17, 16, 5, 5, 5, 5, 16, 16, 16, 5, 16, 5, 16, 16, 6, 16, 17, 5, 5, 4, 5, 5, 5, 5, 5, 17, 16, 16, 16, 17, 16, 399, 21, HID4: DB 5, 16, 16, 5, 4, 5, 5, 17, 16, 16, 5, 17, 5, 17, 16, 5, 5, 5, 16, 5, 5, 5, 5, 5, 16, 16, 5, 16, 17, 16, 17, 16, 399, 22, HID5: DB 5, 16, 16, 5, 6, 5, 5, 17, 16, 16, 5, 17, 5, 17, 16, 4, 16, 5, 17, 5, 5, 5, 5, 5, 4, 16, 5, 16, 16, 16, 16, 16, 400, 22, HID6: DB 5, 17, 16, 6, 5, 5, 5, 16, 16, 16, 5, 16, 5, 16, 16, 5, 5, 17, 16, 5, 5, 5, 5, 4, 16, 5, 5, 16, 16, 16, 16, 17, 400, 22, HID7: DB 5, 17, 16, 5, 5, 5, 4, 16, 17, 16, 5, 16, 4, 16, 17, 5, 16, 16, 16, 5, 5, 5, 5, 5, 5, 4, 5, 16, 16, 17, 16, 17, 400, 22, HID8: DB 5, 17, 16, 5, 5, 5, 4, 16, 17, 16, 4, 16, 5, 16, 17, 5, 5, 5, 5, 16, 4, 5, 5, 5, 16, 16, 16, 5, 16, 17, 16, 16, 400, 22, HID9: DB 5, 16, 17, 5, 4, 5, 5, 17, 16, 17, 5, 17, 5, 17, 16, 4, 17, 5, 4, 16, 5, 5, 5, 5, 4, 16, 17, 5, 17, 16, 16, 16, 400, 22, HID0: DB 5, 16, 16, 5, 5, 5, 5, 16, 16, 16, 5, 16, 5, 16, 16, 4, 5, 5, 5, 5, 5, 5, 5, 5, 16, 16, 17, 16, 17, 16, 16, 16, 399, 21, HID11:DB 5, 16, 16, 5, 5, 5, 5, 16, 16, 16, 5, 16, 6, 16, 17, 5, 16, 5, 5, 5, 5, 5, 5, 4, 5, 16, 16, 17, 16, 17, 16, 17, 400, 22, HID12:DB 5, 17, 16, 4, 5, 5, 5, 16, 17, 16, 4, 16, 5, 17, 16, 6, 16, 16, 16, 5, 16, 6, 5, 5, 5, 5, 5, 17, 5, 16, 16, 16, 399, 22, HID13:DB 5, 16, 16, 5, 6, 5, 5, 17, 16, 16, 5, 17, 5, 16, 16, 4, 16, 17, 5, 16, 16, 5, 4, 5, 5, 5, 16, 5, 5, 16, 17, 16, 400, 22, HID14:DB 5, 17, 16, 5, 5, 5, 6, 16, 17, 16, 6, 16, 5, 17, 16, 5, 16, 16, 17, 16, 16, 5, 5, 6, 5, 5, 5, 6, 5, 16, 16, 17, 400, 22, ;---------------------------------- TX: ; TX LO OUT=1 9mS... - 54 -

MOV R4,#90 CALL LO ; TX HI OUT=0 4.5mS... MOV R4,#44 CALL HI ; TX 10 BYTES4 32 BIT DATA MOV R1,#32 MOV DPTR, #HID $1: CALL LO8 MOV A,#0 MOVC A,@A+DPTR MOV R4,A CALL HI INC DPTR DJNZ R1,$1 CALL SEND_END ;-------------------------------------------------- ; X=0.2 ms ; LO HI LO HI ; 8 400 92 22 ;------------------------ SEND_END: CALL LO8 MOV R4,#200 CALL HI MOV R4,#200 CALL HI ;... MOV R4,#91 CALL LO MOV R4,#22-55 -

CALL HI CALL LO8 CLR OUT ; NORMAL HI LEVEL ;-------------------------------------------------------------------- SEND_HEAD: ; TX LO OUT=1 9mS... MOV R4,#90 CALL LO ; TX HI OUT=0 4.5mS... MOV R4,#44 CALL HI ;-------------------------------------------- SEND: ; TX 10 BYTES4 32 BIT DATA MOV R1,#32 $1: CALL LO8 MOV A,#0 MOVC A,@A+DPTR MOV R4,A CALL HI INC DPTR DJNZ R1,$1 ;-------------------------------------------------- TX1: CALL SEND_HEAD MOV DPTR, #HID1 CALL SEND CALL SEND_END ;----------------------------- TX2: CALL SEND_HEAD MOV DPTR, #HID12 CALL SEND CALL SEND_END - 56 -

;------------------------------ TX3: CALL SEND_HEAD MOV DPTR, #HID13 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID13 CALL SEND CALL SEND_END ;------------------------------ TX4: CALL SEND_HEAD MOV DPTR, #HID14 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID14 CALL SEND CALL SEND_END ;------------------------------ TX5: CALL SEND_HEAD MOV DPTR, #HID0 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID7 CALL SEND CALL SEND_END ;------------------------------ TX6: CALL SEND_HEAD MOV DPTR, #HID0 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID9 CALL SEND - 57 -

CALL SEND_END ;------------------------------ TX7: CALL SEND_HEAD MOV DPTR, #HID11 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID11 CALL SEND CALL SEND_END ;------------------------------ TX8: CALL SEND_HEAD MOV DPTR, #HID2 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID2 CALL SEND CALL SEND_END ;------------------------------ TX9: CALL SEND_HEAD MOV DPTR, #HID2 CALL SEND NOP CALL SEND_HEAD MOV DPTR, #HID3 CALL SEND CALL SEND_END ;------------------------------ ; DELAY R5*10 ms DELAY: MOV R6,#50 D1: MOV R7,#100 DJNZ R7,$ - 58 -

DJNZ R6,D1 DJNZ R5,DELAY ;-------------------------------- LED_BL: MOV R4,#4 LE1: CPL WLED MOV R5,#5 CALL DELAY DJNZ R4,LE1 ;----------------------------------- INIT_RS232: ;<9600 N 8 1> MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0FDH SETB TR1 SETB TI ;------------------------------------ TX_CHAR: JNB TI,$ CLR TI MOV SBUF, A ;------------------------------------- RECOG: MOV A,#CREC ; SEND RECOG. COMMAND CALL TX_CHAR ; VCM ENTER RECOG MODE... MOV R5,#200 ; 1.0 SEC WAITING CALL DELAY ; WAIT FOR ANSWER... CALL RXA ; RX ANSWER CALL OP ; TRIGGER LED ON OFF ;------------------------------------ - 59 -

; RX ANSWER '@0x' x=answer INDEX NO 0--4 ; WAIR RX '@' OR 'X' TO...EXIT RXA: MOV ANS,#255 ; RESET ANSWER ; WAIR FOR '@' OR 'X' TO EXIT... JNB RI,$ CLR RI MOV A,SBUF CJNE A,#'@',$1 ; NOT '@' SKIP ; RX '0'... JNB RI,$ ; WAIT RX CLR RI MOV A,SBUF ; RX 'x'... JNB RI,$ ; WAIT RX CLR RI MOV A,SBUF MOV ANS,A $1: ;---------------------------------------------------------------- ; O/P SIGNAL... OP: MOV A,ANS CJNE A,#'0', $1 CALL TX CALL BZ $1: CJNE A,#'1', $2 CALL TX1 CALL BZ $2: CJNE A,#'2', $3 CALL TX2 CALL BZ - 60 -

$3: CJNE A,#'3', $4 CALL TX3 CALL BZ $4: CJNE A,#'4', $5 CALL TX4 CALL BZ $5: CJNE A,#'5', $6 CALL TX5 CALL BZ $6: CJNE A,#'6', $7 CALL TX6 CALL BZ $7: CJNE A,#'7', $8 CALL TX7 CALL BZ $8: CJNE A,#'8', $9 CALL TX8 CALL BZ $9: CJNE A,#'9', $10 CALL TX9 CALL BZ $10: - 61 -

C-2 89C2051 程式碼 ;---------------------------------------------------- ; K1 : TRAIN 1 ; K2 : MODIFY 1 ; K3 : LISTEN 1 ; K4 : RECOG. ; RESET+K1 --> INIT SYSTEM AND BE ; RESET+K3 --> TEST DTMF TEL DIAL ;-------------------------------------------- LF EQU 0AH CR EQU 0DH OKF REG 20H.0 ; COMMAND OK FLAG ; KEY4... K1 REG P3.2 K2 REG P3.3 K3 REG P3.4 K4 REG P3.5 ; LCD... RS REG P0.0 EN REG P3.6 WLED REG P3.7 ;-------------------------------- PUBLIC RSOP ; EXTERNAL VC CODE IN VC3.OBJ... EXTERNAL SCOM EXTERNAL TXB EXTERNAL ECHO EXTERNAL ECHO1 EXTERNAL READ_VC EXTERNAL BEEP EXTERNAL SAYA EXTERNAL STORE - 62 -

EXTERNAL GET_CP EXTERNAL TRAIN EXTERNAL ADD_TEL EXTERNAL RECOG EXTERNAL SAY_NAME EXTERNAL SET_CP EXTERNAL SAY_DB EXTERNAL DEL_DB EXTERNAL DEL1 EXTERNAL GET_CP1 EXTERNAL STORE_P EXTERNAL FETCH_P EXTERNAL DIAL_DIG ;... ;************************************ MNO EQU 10 ; NO:0 1 2...MNO-1 ;************************************ BU EQU 30H ; 30H--37H DATA PACKET BUF SUM EQU 38H ; CHECK SUM ANS EQU 39H ; RECOG. ANSWER TA EQU 3AH ; TEMP. A CO EQU 3BH ; COUNTER X EQU 3CH ; LCD X POS CP EQU 3DH ; VC CP LNO EQU 3EH ; LISTEN INDEX NO TRNO EQU 3FH ; HAVE TRAINED NO ; USER RAM...5FH 60H-->SP ;--------------------------------------- RNO EQU 10 ; MAX RECOG. WORDS MHS REG P1.0 SHS REG P1.1 DAT REG P1.2 RESETP REG P1.3 ;----------------------------------------------------- - 63 -

ORG 0H JMP BEGIN ;--------------------------- BEGIN: CALL INIT_PORT MOV LNO,#0 CALL RESET_CHIP CALL LED_BL CALL INIT_RS232 ; MOV DPTR,#MESS ; CALL TX_STR ; MOV DPTR,#MESS1 ; CALL TX_STR ;... JB K1,$1 ; RESET+K1 --> INIT ALL... CALL INIT_ALL JMP $2 ;... $1: JB K3,$2 ; RESET+K3 --> TEST DIAL LOOP CALL LED_BL CALL LED_BL CALL LED_BL CALL BEEP $11: JB K3,$ ; TEST DIAL "117" CALL DIAL CALL LED_BL JMP $11 ; RUN CODE... $2: LJMP MLOOP - 64 -

;----------------------------------------------------------------- INIT_RS232: ;<9600 N 8 1> MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0FDH SETB TR1 SETB TI ;------------------------------------ TX_CHAR: ;TX 1 CHAR JNB TI,$ CLR TI MOV SBUF, A ;------------------------------------- TX_STR: ;TX A STRING CLR A MOVC A,@A+DPTR CJNE A,#0, TX1 ; '$' TX1: CALL TX_CHAR INC DPTR JMP TX_STR ;-------------------------- MESS: DB "VCM V1.0 CONTROL...", LF, CR,0 MESS1: DB "PLEASE KEY IN ANY COMMAND 1--6 ", LF, CR,0 M_INIT: DB "INIT SYSTEM", LF, CR,0 M_LIST: DB "LISTEN 1 VOICE", LF, CR,0 M_RECOG: DB "RECOG 1 VOICE", LF, CR,0 M_TRAIN: DB "TRAIN 1 VOICE", LF, CR,0 M_MODIFY: DB "MODIFY 1 VOICE", LF, CR,0 M_DIAL: DB "DIAL NO", LF, CR,0 ;-------------------- FILTER: - 65 -

CJNE A,#'i', $1 ; 'i'---init SYSTEM... ; MOV DPTR,#M_INIT ; CALL TX_STR CALL INIT_ALL $1: CJNE A,#'l', $2 ; 'l'---listen 1 VOICE... ; MOV DPTR,#M_LIST ; CALL TX_STR CALL LIST CALL LED_BL $2: CJNE A,#'r', $3 ; 'r'---recog... ; MOV DPTR,#M_RECOG ; CALL TX_STR CALL LED_ON CALL RECOG ; CHECK OKF=1 THEN SAY... JNB OKF,$21 CALL SAY_NAME MOV A,#'@' ; TX '@0X' ANSWER CALL TX_CHAR MOV R5,#20 CALL DELAY CALL GET_CP1 MOV A,CP CALL SHOW_DIG JMP $22 ; RECOG. ERROR... $21: MOV A,#'X' ; TX 'X' NO ANSWER - 66 -

CALL TX_CHAR CALL LED_BL CALL LED_BL $22: CALL LED_OFF ;... $3: CJNE A,#'t', $4 ; 't'---train 1... ; MOV DPTR,#M_TRAIN ; CALL TX_STR CALL TRAIN1 $4: CJNE A,#'m', $5 ; 'm'---modify... ; MOV DPTR,#M_MODIFY ; CALL TX_STR CALL MODIFY CALL LED_BL $5: CJNE A,#'d', $6 ; MOV DPTR,#M_DIAL ; CALL TX_STR CALL DIAL ;... $6: ;----------------------------- ; A:DIG ; SHOW XX TO SPORT SHOW_DIG: MOV B,#10 DIV AB - 67 -

ADD A,#30H CALL TX_CHAR MOV R5,#20 ; 20 CALL DELAY MOV A,B ADD A,#30H CALL TX_CHAR ;----------------------------------------------------------------- RESET_CHIP: CLR RESETP ; SVC RESET LOW MOV R5,#30 CALL DELAY SETB RESETP ;---------------------------- INIT_PORT: SETB RESETP CLR EN ; LCD OFF SETB MHS SETB SHS SETB DAT TITLE: DB "VCM VC MODULE V1.0 " ;------------------------------------------------------------- INIT_ALL: CALL STORE CALL DEL_DB CALL BEEP CALL LED_BL CALL BEEP CALL LED_BL CALL BEEP ;-------------------------------- MLOOP: - 68 -

LOOP: JNB RI,$0 CLR RI MOV A,SBUF CALL FILTER ; RUN COMMAND FORM SERIAL PORT JMP LOOP ; POOLING OTHERS... $0: ; TEST KEY... JB K1,$1 ;********************************* ; K1 KEYED... CALL TRAIN1 JMP LOOP ;... $1: JB K2,$2 ;********************************* ; K2 KEYED... CALL MODIFY CALL LED_BL JMP LOOP ;... $2: JB K3,$3 ; JNB K3,$ ;************************************ ; K3 KEYED... CALL LIST CALL LED_BL ;... $3: JB K4,$4 ;************************************* ; K4 KEYED... CALL LED_ON CALL RECOG ; CHECK OKF=1 THEN SAY... - 69 -

JNB OKF,$31 MOV ANS,CP CALL SAY_NAME JMP $32 ; RECOG. ERROR... $31: CALL LED_BL CALL LED_BL $32: CALL LED_OFF JMP LOOP ;... $4: JMP LOOP ;-------------------------------------------- TRAIN1: CALL LED_ON CALL TRAIN CALL LED_OFF CALL SAY_NAME ; SAY CP NAME CALL LED_BL ;-------------------------------- DIAL: MOV A,#1 CALL DIAL_DIG CALL LED_BL MOV A,#1 CALL DIAL_DIG CALL LED_BL MOV A,#7 CALL DIAL_DIG CALL LED_BL ;---------------------------------------------------------------- - 70 -

; DELAY R5*10 ms DELAY: MOV R6,#50 $1: MOV R7,#100 $2: DJNZ R7,$2 DJNZ R6,$1 DJNZ R5,DELAY ;-------------------------------- LED_ON: CLR WLED ;--------------------- LED_OFF:SETB WLED ;--------------------- LED_BL: MOV R4,#4 $0: CPL WLED MOV R5,#5 CALL DELAY DJNZ R4, $0 ;---------------------------------------------------------- ; SERIAL PORT O/P MESSAGE RSOP: CALL TX_STR ;----------------------------------------------------------------------- ; LISTEN 1 DB 0--MNO-1 VALID LIST: ; IF LNO=MNO LNO=0 INC LNO MOV A,LNO CJNE A,#MNO,$1 MOV LNO,#0 $1: MOV A,LNO CALL SET_CP CALL SAY_NAME ; SAY CP NAME - 71 -

;-------------------------------------------- MODIFY: ; MODIFY: DEL 1 AND ADD 1 MOV A,LNO CALL SET_CP ; SET NEW CP TO DEL. CALL DEL1 CALL BEEP MOV R5,#100 CALL DELAY CALL LED_ON CALL TRAIN1 ; MODIFY NOW CP'S DB CALL LED_OFF ;--------------------------------- - 72 -