自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何開發(fā)出你自己的Siri應(yīng)用程序?

譯文
移動開發(fā) Android
本文將幫助大家了解如何編寫屬于自己的Siri應(yīng)用程序。去年我曾負(fù)責(zé)開發(fā)過一款A(yù)ndroid Siri應(yīng)用,目前這款軟件已經(jīng)完成并被擺上Google Play的貨架。希望我的親身經(jīng)歷能為大家?guī)韱⑹尽?/div>

什么是移動助手應(yīng)用?

[[75855]]

【2013年6月26日 51CTO外電頭條】移動助手應(yīng)用應(yīng)當(dāng)包含以下功能:

  • 它應(yīng)是一款移動應(yīng)用(包括Android、iOS、Windows Phone等平臺),
  • 大家可以通過文字或語音進(jìn)行提問,
  • 大家可以通過文字、語音、圖像或者活動獲得應(yīng)答信息,
  • 它應(yīng)涉及移動設(shè)備中固有的功能,例如麥克風(fēng)、屏幕、GPS、互聯(lián)網(wǎng)、揚聲器以及存儲在設(shè)備中的信息。

移動助手應(yīng)用能做些什么?

移動助手應(yīng)用能實現(xiàn)很多功能,我所開發(fā)的首個版本僅僅能夠理解并回應(yīng)十五條指令,但如今它已經(jīng)能夠理解并回應(yīng)超過五十條指令?;A(chǔ)指令類型應(yīng)當(dāng)包含新聞、天氣、鬧鐘設(shè)置以及呼叫聯(lián)系人等。在移動市場中搜索移動助手軟件時,我發(fā)現(xiàn)以上幾類指令最為通用。下面我就列出一份需要預(yù)置在內(nèi)指令列表,幫助大家的移動助手具備基本功能。

  • 設(shè)置鬧鐘
  • 從新聞、天氣、賽事比分及維基百科中獲取信息
  • 運行應(yīng)用程序
  • 打開媒體文件(包括視頻與音樂)
  • 在Facebook或者twitter等社交平臺上分享內(nèi)容
  • 讀取/編寫短信或電子郵件
  • 讀取某些社交媒體分享內(nèi)容
  • 尋找最近的市場、藥房、醫(yī)院及餐廳等
  • 呼叫某人
  • 處理基本數(shù)學(xué)問題
  • 檢查銀行存款余額
  • 向某人匯出款項
  • 檢查最近的貨幣或證券交易信息
  • 讀取/設(shè)置日程表
  • 購買演唱會或旅行票據(jù)
  • 諸如此類

其中一些指令類型可以與第三方公司的業(yè)務(wù)相集成。舉例來說,大家可以通過集成讓自己的移動助手向Amazon或者Best Buy下達(dá)貨品訂單。

市場上現(xiàn)有移動助手匯總

目前市場上已經(jīng)存在六十多種知名手機(jī)助手產(chǎn)品,其中人氣最高的當(dāng)數(shù)Siri以及谷歌語音搜索方案。

以下表格列出了市場上的現(xiàn)有移動助手及其開發(fā)環(huán)境(編者注:僅包括國外)。

  • Siri,
  • 谷歌語音搜索,
  • Nuance Nina,
  • Dragon移動助手,
  • Angel Lexee,
  • AIVC,
  • Iris,
  • Skyvi,
  • EverFriends,
  • EasyLuncher,
  • Speaktoit,
  • Evi,
  • Turkcell Mobil Asistan(土耳其)。
[[75856]]

Siri與谷歌語音搜索人氣最高,也就無需贅述。下面我向大家介紹關(guān)于Nina、Lexee、Dragon移動助手以及Turkcell Mobil Asistan的簡要信息。

Nuance Nina: Nuance公司專為大型企業(yè)提供用于開發(fā)自有移動助手應(yīng)用的SDK,開發(fā)成果可以充當(dāng)企業(yè)客戶的服務(wù)應(yīng)用。這款SDK可與iOS及Android應(yīng)用相集成。感興趣的朋友不妨點擊此處查看其官方網(wǎng)站的介紹信息。

Lexee: Lexee是一款來自Angel Labs公司的移動助手,同時也提供足以創(chuàng)建自有移動助手的網(wǎng)絡(luò)環(huán)境。大家可以添加、更新及刪除各類方案,且無需通過網(wǎng)絡(luò)接口進(jìn)行編碼。Lexee另一大值得稱道的重點在于分析工具。Angel Labs非常擅長分析工具的開發(fā),因此Lexee環(huán)境也給用戶帶來專業(yè)級別的使用報告及數(shù)據(jù)匯總選項。

感興趣的朋友可以點擊此處了解更多信息并查看介紹視頻。

Dragon移動助手: Dragon移動助手是Nuance公司帶來的又一力作。Dragon移動助手允許用戶通過自然語言訪問各類內(nèi)容,并輕松在手機(jī)上完成日常工作。大家可以點擊此處查看更多相關(guān)資料。

點擊此處則能夠下載這款應(yīng)用,并觀看我個人最喜愛的移動助手介紹視頻。

Turkcell Mobil Asistan: Turkcell Mobil Asistan是Google Play商店中惟一一款來自土耳其的移動助手應(yīng)用。Turkcell歐洲最大的全球移動通信企業(yè)之一。通過這款應(yīng)用程序,大家可以為客戶提供包括手機(jī)賬單查詢、流量資費信息在內(nèi)的各種輔助性服務(wù)。另外,它還能回答用戶關(guān)于伊斯坦布爾本地新聞、天氣、貨幣以及交通情況的問題。

大家可以點擊此處了解更多關(guān)于Turkcell Mobil Asistan的信息并下載這款應(yīng)用。

#p#

移動助手中的技術(shù)要點

我希望上述信息能幫助大家了解移動助手的基本概念。下面我們再來看看關(guān)于這類應(yīng)用程序的一些技術(shù)要點。移動助手應(yīng)用應(yīng)當(dāng)涉及以下技術(shù)項目:

  • 語音到文本(簡稱STT)引擎
  • 文本到語音(簡稱TTS)引擎
  • 標(biāo)簽(智能)
  • 降噪引擎
  • Voice Biometrics,語音生物識別技術(shù)
  • Speech Compression Engine,語音壓縮引擎
  • 應(yīng)答用戶界面
  • STT: Speech2Text引擎能夠?qū)碜杂脩舻恼Z音轉(zhuǎn)化為文本信息。語音內(nèi)容應(yīng)可以來自語音文件或者數(shù)媒體信息。
  • TTS: Text2Speech引擎能夠?qū)⑽谋緝?nèi)容轉(zhuǎn)化為語音信息。將回答文本轉(zhuǎn)化為語音形式非常重要,在用戶駕車等特殊情況下尤其如此。
  • 標(biāo)簽: 由STT創(chuàng)建出的文本內(nèi)容有時候會比較復(fù)雜。標(biāo)簽技術(shù)的介入能夠快速識別出用戶希望通過語音表達(dá)的主要意見。舉例來說,如果用戶詢問明天應(yīng)該穿什么樣的衣物,標(biāo)簽引擎會將信息記入天氣或者日程表標(biāo)簽。
  • 降噪引擎: 用戶輸入的語音信息有時候不太清晰,其中混入的噪音(例如空調(diào)機(jī)噪音)可能影響識別效果。降噪引擎會從語音中將白噪音消除掉。
  • 語音生物識別技術(shù): 移動助手能夠提供基于賬戶的細(xì)節(jié)信息,例如信用卡月度報告等。跟金錢掛鉤的當(dāng)然是大事,因此身份識別機(jī)制就顯得極為重要。語音生物識別技術(shù)正是身份驗證方案中的一種。通過這種技術(shù),移動助手能夠驗證使用者的身份,從而決定是否允許其進(jìn)行系統(tǒng)操作。
  • 語音壓縮引擎: 如果助手工作起來速度緩慢,用戶很可能由于失去耐心轉(zhuǎn)而打開瀏覽器去網(wǎng)上尋找答案,這就讓大家的心血付之東流了?;ヂ?lián)網(wǎng)通信狀態(tài)非常重要,而傳輸過程中所使用的數(shù)據(jù)包大小也同樣關(guān)鍵。小數(shù)據(jù)包的傳輸速度更快、獲取結(jié)果的速度也更為出色。有鑒于此,一款優(yōu)秀的移動助手應(yīng)用必須具備語音壓縮引擎。客戶端需要通過發(fā)送語音壓縮包來實現(xiàn)快速反應(yīng)。不過語音壓縮與普通壓縮有所區(qū)別,這是因為語音文件中并不存在我們平時所見的重復(fù)數(shù)據(jù)。大家最好選用G711壓縮算法,它的勝出主要因為這種算法不會造成數(shù)據(jù)丟失。
  • 應(yīng)答用戶界面: 在服務(wù)器發(fā)回處理結(jié)果后,應(yīng)用會播放一段語音應(yīng)答,而設(shè)備屏幕中的應(yīng)答界面也需給出對應(yīng)信息提供。我個人的建議是,請不要使用本機(jī)組件,因為這樣會給應(yīng)用造成限制。最好采用基于網(wǎng)絡(luò)的用戶界面,這種應(yīng)用界面能夠更方便地在不同系統(tǒng)平臺中正確運作。

移動助手架構(gòu)解析

移動設(shè)備與主服務(wù)器之間必然存在通信流,因為用戶當(dāng)然不希望在使用應(yīng)用的同時還要苦等語音數(shù)據(jù)下載完成。對于助手類應(yīng)用而方,速度的重要性不言而喻——速度越快、用戶的使用感受也就越自然。在理想狀況下,用戶甚至?xí)械阶约合袷钦娴脑谂c客戶代表或者助理開展交流。

當(dāng)用戶按下按鈕、通過客戶端提出問題,客戶端會立即將問題一字節(jié)一字節(jié)地提交至主服務(wù)器(Main Server)。主服務(wù)器又將數(shù)據(jù)發(fā)送至STT服務(wù)器(STT Server),STT服務(wù)器從語音中整理出文本內(nèi)容,然后將其傳回主服務(wù)器。接下來,主服務(wù)器將文本發(fā)送至標(biāo)簽服務(wù)器(Tagging Server),旨在了解用戶的實際需要。標(biāo)簽服務(wù)器為該條請求創(chuàng)建標(biāo)簽,例如“weather_info”。標(biāo)簽被發(fā)回之后,主服務(wù)器再次負(fù)責(zé)將標(biāo)簽信息傳送至信息服務(wù)器(Information Server)。如果標(biāo)簽內(nèi)容涉及身份驗證機(jī)制,那么安全服務(wù)器(Security Server)將率先對其進(jìn)行檢查,然后才放行至信息服務(wù)器。最后,響應(yīng)結(jié)果進(jìn)入主服務(wù)器,主服務(wù)器據(jù)此創(chuàng)建響應(yīng)文本、響應(yīng)圖像以及語音文本(借助TTS服務(wù)器)并將響應(yīng)結(jié)果發(fā)送至移動設(shè)備。

信息服務(wù)器可以與第三方服務(wù)器進(jìn)行通信,以獲取某些原本并未存儲在信息服務(wù)器當(dāng)中的資訊。安全服務(wù)器則可以包含多種身份驗證技術(shù),例如語音生物識別技術(shù)、IMSI-IP半徑查找、賬號密碼認(rèn)證等等。

#p#

應(yīng)答用戶界面 

如果大家打算利用本機(jī)組件開發(fā)應(yīng)答界面,那么最終軟件成果將很難在不同類型的客戶機(jī)上順利實現(xiàn)顯示格式與項目滾動的統(tǒng)一效果。我個人建議大家創(chuàng)建一套自定義Web視圖,這樣會讓應(yīng)答格式的添加變得更為輕松。

上面圖片顯示的是SiriWebView在屏幕中的顯示效果。Web視圖可由用戶任意滾動,而且當(dāng)新應(yīng)答出現(xiàn)后、整個視圖會自動向上移動。

在本節(jié)中,我將向大家簡要介紹自己編寫SiriWebView的過程。在這里大家將看到關(guān)于web視圖的所有示例項目。向其它平臺的用戶們說聲抱歉,此處所舉的范例只適用于Android平臺。

首先,創(chuàng)建一個新類,并將其命名為SiriWebView。它基本上屬于由基本Android web視圖做出的擴(kuò)展。這個類應(yīng)該包含并覆蓋OnDraw函數(shù),另外我們還應(yīng)向其中添加兩個新函數(shù)。其一用于創(chuàng)始化,其二則用于添加新應(yīng)答內(nèi)容。以下代碼片段顯示的就是如何添加新應(yīng)答內(nèi)容。

  1. public void AddNewCallOut(String message, Boolean ismsgResponse) { 
  2.         elementId = elementId + 1
  3.         StringBuilder messageBuilder = new StringBuilder(); 
  4.  
  5.         if (!message.contentEquals("")) { 
  6.  
  7.             if (!ismsgResponse) { 
  8.                 messageBuilder 
  9.                         .append("<table class='bubble-gray' cellspacing='0' cellpadding='0'><tr><td class='head'></td></tr>"); 
  10.                 messageBuilder 
  11.                         .append("<tr><td class='mid'><div class='txt shadow'>" 
  12.                                 + message + "</div></td></tr>"); 
  13.                 messageBuilder 
  14.                         .append("<tr><td class='foot'></td></tr></table>"); 
  15.             } else { 
  16.                 messageBuilder 
  17.                         .append("<table class='bubble-blue' cellspacing='0' cellpadding='0'><tr><td class='bhead'></td></tr>"); 
  18.                 messageBuilder 
  19.                         .append("<tr><td class='bmid'><div class='txt shadow'>" 
  20.                                 + message + "</div></td></tr>"); 
  21.                 messageBuilder 
  22.                         .append("<tr><td class='bfoot'></td></tr></table>"); 
  23.             } 
  24.  
  25.             loadUrl("javascript:document.getElementById(\"div" + elementId 
  26.                     + "\").innerHTML=\"" + messageBuilder.toString() + "\";"); 
  27.         } 
  28.         StringBuilder jvscr = new StringBuilder(); 
  29.         if (!ismsgResponse) { 
  30.             if (elementId != 1) { 
  31.                 if (!ismsgResponse) { 
  32.                     jvscr.append("var elem = document.getElementById('div" 
  33.                             + (elementId - 1
  34.                             + "');     var x = 0;     var y = 0;     while (elem != null) {         x += elem.offsetLeft;         y += elem.offsetTop;         elem = elem.offsetParent;     } "); 
  35.                     jvscr.append("var endj=500; var i=window.scrollY; for(i=window.scrollY;i<y;i++){ var j=0; var a=0; for(j=0;j<endj;j++) {a=a+1; }  window.scrollTo(x, i); } "); 
  36.                     loadUrl("javascript:" + jvscr.toString()); 
  37.                 } 
  38.             } 
  39.         } 
  40.     } 

該函數(shù)中涉及兩個參數(shù),分別是message與isResponse。大家可以在需要添加新應(yīng)答內(nèi)容時隨意寫入消息字串,并設(shè)定isResponse參數(shù)的值以調(diào)用該函數(shù)。該參數(shù)的作用是改變應(yīng)答信息的字體顏色并滾動屏幕。在函數(shù)的第一行中,大家可以看到elementId參數(shù)。該參數(shù)對于對象的滾動處理非常重要。

在創(chuàng)建好自己的界面組件后,大家可以將成果添加到main_activity.xml當(dāng)中,如下所示。

  1. <com.example.siriui.SiriWebView 
  2.           android:id="@+id/webview" 
  3.           android:layout_width="fill_parent" 
  4.           android:layout_height="fill_parent" 
  5.           android:keepScreenOn="true" 
  6.         android:layout_marginTop="0dp" 
  7.         android:layout_gravity="fill" 
  8.           android:layout_marginBottom="0dp" 
  9.           android:layout_marginLeft="0dp" 
  10.           android:layout_marginRight="0dp" 
  11.           android:scrollbars="horizontal" 
  12.            /> 

最終效果是什么樣?大家可以參照前面給出的截圖。

責(zé)任編輯:徐川 來源: 51CTO
相關(guān)推薦

2012-04-25 22:56:10

Android

2022-09-19 00:37:13

SaaS云計算開發(fā)

2012-04-26 22:32:01

Android

2018-12-11 11:41:14

物聯(lián)網(wǎng)應(yīng)用程序IOT

2013-11-19 15:35:01

2021-12-08 07:31:40

微服務(wù)架構(gòu)程序

2021-11-24 09:00:00

云計算開發(fā)應(yīng)用

2011-02-22 14:42:52

AndroidPad

2015-09-06 09:17:31

2009-07-17 16:09:29

Swing桌面應(yīng)用程序

2013-02-22 09:28:45

MEAP軟件移動應(yīng)用開發(fā)HTML5

2012-02-08 15:06:31

ibmdw

2013-02-21 14:14:40

開發(fā)Tizen

2013-02-21 14:15:41

開發(fā)Tizen

2024-01-18 07:53:37

2020-08-25 14:03:20

應(yīng)用程序屏蔽應(yīng)用程序內(nèi)保護(hù)網(wǎng)絡(luò)攻擊

2012-04-26 13:48:56

iPhone應(yīng)用發(fā)布Ad Hoc

2011-05-24 16:09:57

Androi

2015-01-06 09:59:59

云應(yīng)用程序Java開發(fā)SQL

2010-05-02 14:35:47

Meego開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號