鄒元鵬

摘 要:介紹了一種基于Arduino的語音報警系統。文中描述了語音系統的實現原理和具體功能,該系統通過接收以太網上的UDP報文,解析成文本并進行語音朗讀,實現智能化的語音報警。本設計硬件部分選用了開放式的硬件平臺Arduino和文本語音轉換(TTS)模塊;軟件部分給出了控制器中具體的程序邏輯實現;最后對系統的控制方法作了說明。
關鍵詞:Arduino;語音報警系統
當前市場上常用的語音報警系統分兩種。一種是帶錄音功能的語音報警器,內置通用的多種報警語音,按條件觸發播放。這種語音報警系統聲音自然,易于使用。但是如果需要修改語音,或是需要播報的語音條目太多時,需要做的工作量非常大,且難以實現智能化的語音報警(如在語音中自動插入報警的設備號)。近年來,隨著語音文字轉換技術(TTS)的發展,另一種采用此種技術的語音報警系統開始普及,極大的提高了工業報警系統的自動化和智能化程度。
本文介紹一種以SYN6658 TTS語音模塊、W5100以太網模塊以及開源Arduino平臺實現的基于以太網的語音報警系統。該系統可方便的與工廠中常用的多種PLC直接對接。系統從以太網接收GBK編碼的UDP報文,將其以指定語速及音色朗讀。具有擴展性好,網絡負載低、易于實現等多種優點,為相關語音系統的構建提供了參考。
一、硬件設計
本設計采用了Arduino Nano 控制板、W5100以太網模塊、SYN6658語音模塊及有源音箱、穩壓電源等構成。系統的組成如圖所示。
系統通過W5100接收報文,經過Arduino解析并再次封裝,發送給SYN6658模塊,模塊將編碼轉換為語音并驅動音箱播放。
Arduino是一種基于Atmel的微控制器的開源軟硬件平臺,近年來隨著智能硬件的普及得到了廣泛應用,這種控制板細分為眾多型號,本次設計中使用的是基于ATmega328的Arduino Nano版本。該版本體積比標準板更小,采用更友好的MiniUSB供電接口,提供14個數字輸入輸出引腳和8個模擬輸入引腳,32KB 閃存,2KB SRAM和1KB EEPROM。
W5100是一款多功能的單片網絡接口芯片,內部集成了10/100M以太網控制器,主要用于各種高集成、高穩定、高性能和低成本的嵌入式系統中。W5100內部集成了全硬件的TCP/IP協議棧。
SYN6658是一款優秀的語音合成芯片,芯片通過UART接口或SPI接口通訊方式接收待合成的文本數據,實現文本到語音的轉換,主要應用于公交語音報站、自動售貨機、排隊機等領域。芯片支持文本智能分析、多音字處理、中文姓氏處理、語音語調切換等多種功能。
Arduino Nano與W5100間使用SPI對接,可以實現以太網數據的讀取和寫入,同時與SYN6658間使用TTL串口通訊,實現語音報文的發送。
二、軟件設計
軟件部分采用Arduino1.6.8編程軟件平臺完成,該平臺使用了一種類C的語言進行編程序編制。程序通過Socket通訊機制接收UDP報文,然后通過串口發送文本信息。
簡化后的主要程序邏輯如下:
void setup() {
Ethernet.begin(mac, ip); //初始化網絡模塊
Udp.begin(localPort); //開始監聽端口
Serial.begin(9600);}
void loop() {
int packetSize = Udp.parsePacket(); //接收報文
if (packetSize) {
Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
unsigned char head[packetSize+5]; //封裝文本數據
head[0] = 0xFD;
head[1] = 0x00;
head[2] = packetSize+2;
head[3] = 0x01;
for(int i=0; i<=packetSize; i++){
head[i+2] = packetBuffer[i];}
for(int i=0; i Serial.write(head[i]);}}} //發送給語音模塊 三、系統控制方法 本語音系統的報警可使用任意支持以太網Socket連接的設備觸發。調試時可使用PC上的Socket測試助手進行連接,也可使用高級語言編寫控制端軟件進行控制。實際工業現場中,由于現在大部分PLC都支持Socket連接,可直接將該語音報警系統連入現場以太網,通過在PLC中編寫程序與報警系統進行對接。 四、結語 經測試,該語音報警系統能夠根據現場發送的文本進行報警,硬件可靠性,搭配的放大電路及有源音箱的功率也足夠,滿足可用性要求。但本方案中并未考慮現場電磁屏蔽保護,如果現場電磁干擾較強,需要設計防護外殼為系統屏蔽電磁干擾,同時選用TCP連接協議進一步增加數據可靠性。另外,該系統也可設計為使用如串口、數字量等其他方式進行控制,以適應不兼容以太網的其他工業現場。 參考文獻: [1]王滿利,張濤.基于單片機的語音報警系統[J].2014(11). [2]BANZIM.Getting started with Arduino[M].California:O`REILLY,2009. [3]蔡睿妍.Arduino的原理及應用[J].電子設計工程,2012(8).