用JS輕應用與HaaS600實現語音播報音箱

2021-03-01 HaaS技術社區
 播報音箱主要功能為語音播報,需要和雲端保持連接,接收雲端播報消息,設備端按照指定規則進行播報。常見的播報場景有支付到帳信息、動態更新的定製化音頻內容、用戶操作回應和提醒等。播報音箱方案涉及雲端、設備端的開發,屬於端雲一體化解決方案。本文聚焦於設備端,主要講述基於IoT JS輕應用和HaaS600硬體平臺實現播報音箱方案。

方案設計

  本方案中採用HaaS600進行播報音箱設備端開發,HaaS600是基於移遠EC100Y-CN通信模組的LTE Cat 1開發板,專為M2M 和IoT應用而設計,可應用於共享控制、金融支付、智能語音、泛工業等場景的智能硬體產品開發。

  軟體方案設計如下:

應用開發

連接雲平臺

  使用JS輕應用的IoT API,傳入三元組信息,即可快速建立和雲端的連接。

  示例:

var iot = require('iot');const productkey = '<product-key>';const devicename = '<device-name>';const devicesecret = '<device-secret>';var iotdev = iot.device({  productKey: productkey,  deviceName: devicename,  deviceSecret: devicesecret,  success: function() {    console.log('success connect to aliyun iot server');  },  fail: function() {    console.log('fail to connect to aliyun iot server');  }});

接收雲端播報消息(類型為service),示例:

iotdev.on('service', function(serviceid, request) {  console.log('received cloud serviceid is ' + serviceid + '\r\n');  console.log('received cloud request is ' + request + '\r\n');});

播報語音  IoT輕應用提供音頻播放組件audioplayer,使用相關API可實現本地和在線音頻文件的播放及控制。示例:
var audioplayer = require('audioplayer');var source = "/test.mp3"audioplayer.play(source);var sourceList = ["/test1.mp3", "/test2.mp3", "/test3.mp3"];audioplayer.listPlay(sourceList);

  單個文件的播報,例如廣告、TTS合成語音等,可通過audioplayer.play()接口,傳入音頻文件地址(支持本地文件以及http、https網絡音頻)  多個文件拼接組合播報,例如金額的拼接,將需要拼接播放的音頻文件存放在數組中,通過audioplayer.listPlay()接口,將音頻文件進行拼接和播放。按鍵處理


var gpio = require('gpio'); var led_network = gpio.open({  id: 'led_network'}); var key_function = gpio.open({  id: 'key_function'}); var key_volumeup = gpio.open({  id: 'key_volumeup'}); var key_volumedown = gpio.open({  id: 'key_volumedown'}); key_function.onIRQ({  trigger: 'rising',  cb: function() {    console.log('key function pressed');  }}); key_volumeup.onIRQ({  trigger: 'rising',  cb: function() {    console.log('key volumeup pressed');  }}); key_volumedown.onIRQ({  trigger: 'rising',  cb: function() {    console.log('key volumedown pressed');  }});


低功耗

當系統空閒時自動進入低功耗狀態。

var pm = require('pm');pm.setAutosleepMode(1)

雲端物模型

播報金額

物模型:

{  speechs:["alipay","{$100}","yuan"],  id:"123",  timestamp:"1595765968612"}

定義:

id: 消息id,用於判斷是否是重複推送

timestamp:交易時間

speechs:表示需要拼接的內容,有3類

   1. {$+數字}:表示按照金額進行播放

   2. {N+數字}或{n+數字}:表示按照數字進行播放

   3. 其它:表示需要播放的語料的標識 播放

播放音頻連結

物模型:

{  url:"http://*********",   id:"123",}

定義:

url:音頻內容url,設備端收到後通過該url下載並播放

id: 編號,用於判斷是否是重複推送

本地語料更新(SpeechPost)
{  speechs:[{"id":"test","url":"http://********"}],  jobcode:"123" }

欄位:

speechs:需要更新的語料列表,每個元素包括id和url,其中id表示語料標識、url是語料下載地址

jobcode:表示語料更新任務id,用於雲端和設備同步語料更新任務執行狀態

功能實現

連接雲平臺
var iot = require('iot');var iotdev = iot.device({  productKey: productkey,  deviceName: devicename,  deviceSecret: devicesecret,  success: function() {    console.log('success connect to aliyun iot server');  },  fail: function() {    console.log('fail to connect to aliyun iot server');  }});

執行完成後,和雲端的連接通道建立。

物模型處理

iotdev.on('service', function(serviceid, request) {  console.log('received cloud serviceid is ' + serviceid + '\r\n');  console.log('received cloud request is ' + request + '\r\n');  if (serviceid.indexOf("AudioPlayback") != -1) {    voiceboxPlayContent(request);  } else if (serviceid.indexOf("SpeechBroadcast") != -1) {    voiceboxPlayReceipt(request);  } else if (serviceid.indexOf("SpeechPost") != -1) {    voiceboxResUpdate(request);  }});

語音拼接

數字拼接:

    按照普通數字發音規則進行拼接,例如手機號

    按照金額類數字發音規則進行拼接,例如收款金額

本地語音拼接

    通過音頻標識查找本地文件

拼接結果,例如:

{  speechs:["alipay","{$100}","yuan"],  id:123,  timestamp:"1595765968612"}

拼接後:

語料更新

下載並更新本地語料文件

function voiceboxResUpdate(resource){  var resource = eval('(' + resource + ')');  var speechArray = resource.speechs;   for (var speechIndex = 0; speechIndex < speechArray.length; speechIndex++) {    var speech = speechArray[speechIndex];    console.log('update local speech id: ' + speech.id + ', url: ' + speech.url);    var resourcePath = toneDir + speech.id + tonenameSuffix;    http.download({      url: speech.url,      filepath: resourcePath,      method: 'GET',      headers: {        'Accept':'*/*'      },      success: function (data) {        if(data === defaultMessage) {          console.log('http: [success] http.download');        }      }    });  }}

開發者技術支持

如需更多技術支持,可加入釘釘開發者群

相關焦點

  • 阿里雲HaaS 100開發板體驗:高性價比IoT應用開發神器
    阿里雲智能正式推出一款加速AIoT中小開發者創新的積木式平臺HaaS(Hardware as a Service),該產品旨在幫助AIoT中小開發者聚焦業務,低門檻快速組裝軟硬體積木,實現設備安全上雲5.0雙模支持A2DP V1.3/AVRCP V1.5/HFP V1.6支持Wi-Fi和藍牙共存音頻遠場語音喚醒
  • 微信收款音箱S1、S2和S3收款語音播報防逃單利器
    微信官方收款音箱播報器S1、S2、S3,直接連接個人微信收款碼,獨立播報,無需藍牙,智能語音收款音箱,語音播報防逃單擺地攤神器。3款音箱有什麼區別呢?①外觀不一樣,微信s1為三角形音箱,微信s2為四角梯形音箱,微信s3外觀為圓角正方體;②微信s1電池容量為2000mAh,微信s2電池容量為1200mAh,微信s3電池容量為1800mAh;③微信s1和微信s2不可以連接wifi,微信s3可以連接wifi。3款音箱有什麼共同點呢?
  • 怎樣設置支付寶語音播報
    另外在有了支付寶收錢碼或微信收錢碼之後,你還需要再做最後一步,那就是設置支付寶或微信語音播報。因為這個語音播報非常重要,當別人用手機掃碼付錢時,收款成功後,系統將會自動播報語音告知到帳結果及金額。無需每收到一筆款都要打開支付寶或微信去查看,幫你節省了大量的時間,你就可以專心為客戶介紹你的地攤產品,從而提高銷售產量。下面小編就以支付寶為例,教大家如何在手機上正確地設置語音播報功能。
  • Mycroft:用語音控制家居的開源智能音箱
    Mycroft大致上有三個功能:音樂播放器、語音助手、智能家居語音控制入口——這和國內的叮咚音箱的產品定位基本一致。Mycroft官方人員稱,Mycroft集成了高品質揚聲器,可以識別自然語言,並播放YouTube、Netflix、Spotify和其它在線服務,比如「Mycroft,來一首王力宏的歌你不知道的事」。
  • 微信收款音箱雲喇叭——微信、支付寶收款都可以語音播報
    前段時間給大家詳細介紹了微信官方收款音箱S1、S2和S3的產品特性以及它們的相同點和不同點。今天給大家介紹一款同時支持微信和支付寶收款語音播報的收款音箱微信雲喇叭。微信雲喇叭是一款自帶通訊,能播報收款碼主掃支付(即顧客掃商家收款碼)交易結果的獨立設備,不需要綁定任何其他終端,讓商家快速直觀的獲取(聽到)交易結果信息。該設備是WiFi(無線網)和GPRS(流量)雙通訊自動切換,提高了通訊的穩定性。和收款音箱S3一樣。
  • 智能音箱、機器客服、語音播報群起背後的產品,該怎麼創新呢?
    各種智能語音問答的產品層出不窮,「不懂就問」也是我們獲取知識的重要途徑,縱觀其商業模式,知乎發展的風生水起,足以證明市場需求的潛力有多大。這種問答式產品的發展,還催生網際網路大佬們熱衷於智能音箱的生意經。語音的需求大多是基於場景來考量,比如用戶在開車的時候通過語音交互,就比較安全、便捷;問答的快捷模式不僅提高了用戶獲取知識的效率、還降低教育學習的門檻。
  • 基於AT89S52單片機和ISD4004語音晶片實現語音播報記事器的設計
    基於AT89S52單片機和ISD4004語音晶片實現語音播報記事器的設計 張裕,劉毅敏,方康 發表於 2020-12-15 17:57:16 引 言
  • LINE將在日韓推出語音交互型智能音箱「WAVE」
    【環球科技綜合報導 記者 馬麗】據日媒報導,免費通信應用提供商LINE(連我)3月2日宣布將於年內在日韓兩國推出具備人工智慧(AI)的語音交互型智能音箱「WAVE」。用戶可以通過語音控制實現播報新聞、網上購物等多種功能。
  • 搭載了人工智慧語音助手的音箱,哪款最智能、最好用呢?
    市面上智能音箱不斷地推陳出新,種類繁多,但大多數的智能音箱都只是實現了藍牙連接功能和FM等接連播放功能,而所謂的真正「人工智慧」功能方面並沒有實現多少,歸結到底其實就是一個完善的「人工智慧」系統並不是由一兩家生產智能硬體設備的廠家可以研發出來的。
  • 小愛音箱HD新增實用功能:地震播報趣味鬧鐘來了
    【CNMO新聞】今天小米為小愛音箱HD推送了穩定版軟體更新,新增了地震播報與趣味鬧鐘等新功能。此外,就近喚醒功能的加入,更是省去了動嘴的最後一步,讓小愛同學和更加智能。近日小米手機的地震播報功能在網絡上引發了熱議,提前預警、語音播報的設計,讓用戶們倍感安心。
  • 微信收錢如何設置語音播報?
    微信同樣也想到了這個問題,一起來看看微信如何才能夠開啟語音播報功能吧!打開微信,點擊右下角「我」按鈕,進入到個人設置頁面之後,點擊「支付」按鈕,在支付頁面點擊左上角的「收付款」按鈕,進入收付款頁面之後,找到「二維碼收款」按鈕,點擊並進入到二維碼收款頁面。您可以通過該頁面的二維碼完成收款,最終目的是他人掃描該二維碼並支付成功之後,您能夠及時地聽到收款信息。
  • 淘寶直播如何設置語音播報和視頻直播
    淘寶輕直播1.0核心包含語音播報和視頻開播兩項功能,主要面向V1-V3層級的商家和主播,在非繁忙時間段幫助直播間降低開播人力成本。目前功能在內測階段,尋找意向商家體驗報名內測。功能1:語音播報語音播報功能給主播提供的是直播間用戶意圖的聲音提醒能力,開通功能並選擇打開後,主播可以選擇是否通過語音將直播間的用戶進入、用戶評論、粉絲連麥申請進行提醒播報。
  • 輕應用介紹-用JavaScript進行嵌入式開發
    簡介 輕應用:可運行在輕量級嵌入式設備上的JavaScript應用(左圖) 輕應用框架:封裝了JavaScript引擎和API接口,用於支持輕應用開發的軟體框架(右圖)
  • 微信收款語音音箱,無需藍牙,手機不在可播報
    優點01無需藍牙02手機不在也可以播報03手機關機也可以播報04無需下載APP05騰訊雲技術應用06微信支付官方結算通道、安全可靠、不延遲、不漏播12支持接入小票印表機13大容量、可充電鋰電池、充一次電可以用3天(50筆/天)14不僅僅是一款雲播報器
  • 樹莓派 + Node.js 實現語音機器人 🤖
    volute(蝸殼)是一個使用 Raspberry Pi+Node.js 製作的語音機器人.什麼是 Node.js?的誕生,讓我們可以在伺服器端使用 Javascript.Node.js 是一個能執行 Javascript 的環境,一個事件驅動 I/O 的服務端 Javascript 環境,基於 Google 的 V8 引擎.
  • 想讓應用開口說話?你還缺百度語音合成
    【IT168 應用】當日常時間日益碎片化,同一時間段只專注做一件事,已經成為一件越發奢侈的事情。有心的開發者,一定早已發現用戶正在尋找各種解放眼睛、雙手的方式,期待能「一心多用」。「快讀小說」界面「快聽小說」藉助語音合成技術直接閱讀書籍,這與通過錄音實現書籍閱讀的傳統方式不同,不光需要語音技術進行文字識別,還需根據情感的不同進行對斷句、語調、語速進行自動調節,其背後技術支持者便是百度的語音合成。
  • 微信收款音箱F1內置4G流量卡,播報即時不延遲,0費率,無需連接藍牙WiFi,手機關機不在店裡也可正常播報
    全新4G版微信收款音箱播報器F1,直接連接個人微信收款碼,到帳微信零錢,獨立播報,無需藍牙,智能語音收款音箱,語音播報防逃單,手機關機不在店裡也可以播報
  • 微信收款音箱F2內置4G流量卡,播報即時不延遲,0費率,無需連接藍牙WiFi,手機關機不在店裡也可正常播報
    播報聲音大,支付場所嘈雜也可以聽得清。功能和F1一樣:同樣都是可以綁定個人微信,收款到個人微信零錢,不提現不收取手續費。獨立播報,無需藍牙,也無需WiFi,語音收款音箱語音播報。微信收款音箱播報器F2特點:自帶4G移動流量2年、無需藍牙和WiFi、即時播報、無需下載app、掃碼即可綁定、0費率、獨立播報,手機關機不在店裡也可播報、可隨意移動,無需一直插著電源、機身logo處可貼商家自己的收款二維碼
  • 百度地圖推「輕導航」:語音播報簡化只提供最重要信息
    近日,百度地圖發布全新的V8.8.0版本,新版百度地圖針對車主駕車中使用導航的痛點,重點推出了兩個創新功能:「輕導航」功能和「雙屏導航」,大幅優化了導航體驗。其中,全球首創的「輕導航」功能主打一個「輕」字,對熟路導航這一使用場景做出優化,讓車主在在駕車時可以免受不間斷的語音提醒打擾,只提示擁堵信息,而且可以實現「鎖屏導航」功能,增加行車安全性。而「雙屏導航」功能則將當前信息和全程概覽巧妙地結合在一個界面下,簡化了操作的同時,也方便車主實時把握路況,調整行駛路線從而躲避擁堵。
  • 百度新聞獨家推出「人性化語音播報」
    未來的某個清晨,對著牆壁說話,一個溫暖的男聲或女聲,便會為你播報最新的新聞資訊。如今,這一場景已部分變成身邊的現實。近日,百度新聞客戶端推出的最新版本中,增添了語音播報功能。用戶可以下拉新聞列表,呼出播報選項,軟體將以溫柔磁性且富有感情的男聲播報用戶個人定製的新聞及摘要。