本文主要介紹以 NXP LPC55S69 平台開發的 E-Lock 方案之語音導覽播報使用說明;
- 語音播報 IC (NSP481A) 簡介
- 語音資料庫的建立與燒錄方式說明
- 語音播報的 API 使用方式說明
各項細節會在後續文章進行說明。
2. 語音播報 IC NSP481A 簡介
2_1. NSP481A IC 用途與特色
本方案所使用的語音 IC 是新唐的 NSP481A 單聲道語音導覽播報 IC。
NSP (Flash) 系列是一種先進的單軌語音播放芯片,內建可讀寫的Flash計憶體存放語音檔及新的演算法實現高音質的語音提示應用。
NSP481A NSP語音播報IC特色:
- 外接MCU可以 I2C(非標準) 控制;
- 在 8KHz 取樣率下語音長度最大 458 秒; Flash 版本可重複燒錄;
- RAM 的大小 384 Bytes;
- 工作電源範圍寬,0V-5.5V ;
- 語音編輯簡單,添加語音快捷,把WAV調入就可以編譯燒錄;
- 提供在線升級功能 ISP (In System Program) ,可用以更新語音內容
- 休眠功耗小於1uA ;
2_2. NSP481A 傳輸協議
BP00 (接收 clock) 及 BP01 (接收 data) 則是與 MCU 的 GPIO 相接,以近似 I2C 的通訊協議傳輸。
NSP IC 的通訊協議雖然近似 I2C,但每一個 Data 都不包含 Acknowledge Bit;即每一個 Data 都只用 8 個 Clock 取資料,不像標準的 I2C,還需用第 9 個Clock 判斷 Acknowledge。
本方案是用 GPIO 模擬 NSP IC 的傳輸協議,所以得以控制 NSP481A。
3_1. 語音檔的生成
網路上有一款的免費 TTS (Text-to-Speech) 的軟體 "Balabolka" 下載的網頁如下:
http://www.cross-plus-a.com/balabolka.htm
安裝完並且執行之後,軟體的操作畫面如下,畫面中間藍色框線的部分為語系的設定,維持初始設定“Microsoft Hanhan Desktop [中文 (繁體,台灣)]”即可:
在底下紅色框線為欲轉換的語句文字輸入,我們在此處輸入“驗證開鎖信息”這幾個字之後,將畫面上方的播放鍵按下,
電腦就會將“驗證開鎖信息”這六個字轉成語音檔並且播放出來。
在“檔案”的選單中點選“儲存音檔”,設定存放路徑並給予儲存的檔名,即可將這句語音存檔
3_2. 語句資料庫 Index 的編排
我們先將所有的語音檔都依序建立在如下的表格中,目的是建立每一個語句所對應的 Index;
在將所有語句燒錄到NSP481A flash 時,也必須依照這個建表的 Index 依序編排存放,在使用時才能正確的提取並且播放出來。
播放某個語句時,調用播報語句的 API 並以 Index 值指向預先存放在NSP481A flash 中該語句的位置,就可以將該語句播放出來。
4. 語音檔的編譯、燒錄與測試
4_1. 燒錄所需的工具
在燒錄本方案 E-Lock 的 NSP481A 的語音 IC 時,需要以下的工具:
4_1_1. NSP 1-1 Writer 語音 IC 燒錄器 ( USB dongle )
燒錄器 ( NSP 1-1 Writer USB dongle ) (新唐公司提供) 圖片如下,圖片右邊為 NSP Tboard EVB
4_1_2. Nuvoton NSP PlayList Editor Tool_V1.12.000 ( 語音 IC 燒錄工具 ),以下簡稱“NSP PlayList”
NSP Playlist是一種輕鬆創建在 NSP IC 上運行程序的工具,可進行語句的編輯及語音檔的燒錄。
用戶無需任何編程即可通過此 GUI 創建語音提示器的應用程序。
安裝完成並且開啟編輯燒錄工具後,直接點選下方紅框 “New Project”:
之後會跳出如下的設定框:
在完成上圖的設定之後,會直接出現以下的選項設定;由於本方案所採用播報 IC 的型號是 NSP481,在“Chip”的下拉選單中選擇 NSP481 後,
輸入專案名稱,再按下 OK 鍵確認:
之後會跳出以下的提示訊息,直接按 “Close”,關閉此訊息框即可:
4_2. 語音資料庫的編排
4_2_1. 資源編輯器
接下來會出現準備開始編輯語音檔的畫面:
該畫面主要分兩塊區域,
左邊的是“Resource Editor”資源編輯器,做為將語音檔加入此處中以做為編輯燒錄語音表列的資料庫;
右邊則分為“Sound Editing”語音播放表列編輯以及“Demo Mode”演示模式:
在資源編輯器空白處中,按下滑鼠右鍵,會出現以下圖片中的選單,
點選該選單的“Add Resource …”之後,可將所有要寫入 IC 的語音檔都加入資源編輯區中:
加入語音檔後資源編輯器畫面如下:
4_2_2. 語音播放表列編輯 (Sound Editing)
“語音播放表列編輯”提供編輯語音檔燒錄順序並建立 Index 的功能;
在 “Sound Editing”這個 sheet 的頁面點擊 “Add PlayList”這個按鍵,從‘1’開始,依次增加“Index”值;總共要燒錄多少語音檔到 NSP IC,
則建立對應個數的 Index 值。
PS: 請注意,此 Index 值由 “1”(不是“0”) 開始 !
並且將左邊的“資源編輯”表中的語音檔依照欲燒錄的順序,依次將語音檔用滑鼠拖曳到對應的Index 值的右邊 (如下圖所示),
使拖曳過去的語音檔和 Index 值產生連結:
在整個語音燒錄檔的燒錄與 Index 都產生連結之後,就可以準備進行編譯及燒錄的工作。
PS: 演示模式非本次博文的主題,在此就不予以介紹。
4_3. 燒錄前的準備工作
燒錄器 ( NSP 1-1 Writer USB dongle ) 共四條接腳,依序是 :
1. ICEDATA (DATA)
2. ICECLK (CLK)
3. /RESET
4. GND
NSP481A IC Pin 腳定義如下:
將 Dongle 的第 2 腳 CLK 接到 PCBA NSP481A IC 的第 1 腳 BP00 ,及 第 1 腳 DATA 接到第 8 腳 BP01 即可完成燒錄前的準備工作。
4_4. 編譯語音檔及燒錄
完成燒錄前的準備工作之後,在“Project”的選單中點選“Build+Write”或按“F5”功能鍵,就可以進行語音檔的編譯及燒錄的工作:
最後出現如下圖的“Write OK!”,即代表編譯及燒錄成功 !!!
4_5. 語音測試
要進行燒錄後語音的測試,按下“Sound and IO Preview”按鍵,
會出現以下視窗:
按下“+”按鍵後,會增加一列設定列
在 “None” 的地方按下滑鼠右鍵,會出現一下拉選單,點選“PLAY”:
接著將 Number System: 的下拉選單的“Hexadecimal”改成 “Decimal”,
並且把 “Data Byte”欄位內的 “00,00”改成 “00,Index 值”(如 Index = 1, 則此內容值改為 “00,01”)
如果要將所有燒錄進去的語句都一一測試,則用“+”按鍵增加測試的語句數,並且設定“Data Byte”欄位的 Index 值,
測試語句時,用滑鼠點選要測試的那句話,使之變成藍底白字,再按 “->”按鍵,即可播放。
5. 播報語音的 API 使用介紹
播報語句的 API 名稱為 “AudioNSP_PLAY”,所傳的引數為燒錄在 NSP IC flash 語句的 Index;
回傳值只有 “0”和 “1”,“0”代表與 NSP IC 通訊成功,“1”則代表通訊失敗。
uint8_t AudioNSP_PLAY(uint16_t PlayListIndex) |
例如:
AudioNSP_PLAY(11);
則代表要播放 NSP IC 中預先燒錄的 Index = 11 的那句語音。
6. 參考資料
Nuvoton NSP481A 語音播報 IC datasheet :
https://www.nuvoton.com/export/resource-files/NSP_Flash_Data_Sheet_SC_A6.4.pdf
NXP 官網 : https://www.nxp.com/NXP LPC55S69 Doc ( Datasheet、User manual )