第一篇:實(shí)驗(yàn)二 語音交互設(shè)計(jì)TTS-基于圖形用戶界面
COM:即組件對(duì)象模型,Component Object Model。
1、在COM構(gòu)架下,人們可以開發(fā)出各種各樣的功能專一的組件,組件實(shí)際上是一些小的二進(jìn)制可執(zhí)行程序,它們可以給應(yīng)用程序、操作系統(tǒng)以及其他組件提供服務(wù),然后將它們按照需要組合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)(如dll)。優(yōu)點(diǎn):可用新組件替換原有組件,系統(tǒng)升級(jí)和定制更加簡便;可在多個(gè)應(yīng)用系統(tǒng)中重復(fù)利用同一個(gè)組件;可以方便的將應(yīng)用系統(tǒng)擴(kuò)展到網(wǎng)絡(luò)環(huán)境下;COM與語言、平臺(tái)無關(guān),程序員可充分發(fā)揮自己的才智與專長編寫組件模塊等。
2、使用和處理COM對(duì)象。COM獨(dú)立于語言,COM為自己提供對(duì)象管理例程。COM中創(chuàng)建對(duì)象,實(shí)際是調(diào)用COM庫中的API函數(shù)CoCreatInstance().調(diào)用該函數(shù)時(shí),在注冊(cè)表中查找COM服務(wù)器位置,將服務(wù)器加載到內(nèi)存,并創(chuàng)建所請(qǐng)求的實(shí)例。
3、一般使用COM對(duì)象的步驟是: ? 初始化COM庫(Initialize);
? 創(chuàng)建一個(gè)COM對(duì)象,獲得相應(yīng)接口;
? 如果對(duì)象創(chuàng)建成功,則調(diào)用COM對(duì)象的某個(gè)方法; ? 釋放接口;
? 收回COM庫(Uninitialize)
二、TTS—基于圖形界面
基于圖形用戶界面創(chuàng)建一個(gè)TTS應(yīng)用程序,通過對(duì)菜單命令的選擇執(zhí)行文本-語音的轉(zhuǎn)換。
一、建立項(xiàng)目
1、創(chuàng)建一個(gè)實(shí)現(xiàn)典型“Hello world”應(yīng)用的windows 32平臺(tái)應(yīng)用程序項(xiàng)目。
二、設(shè)置sapi路徑:與SAPI相關(guān)的文件路徑必須在項(xiàng)目中聲明。(sapi.h和sapi.lib)
1、選擇“Tools”→ “Options”→“Directories”選項(xiàng)卡;
2、選擇“Include Files”下拉式選單,增加“sapi.h”的文件路徑;
3、選擇“Library Files”下拉式選單,增加“sapi.lib”的文件路徑;
三、創(chuàng)建“Speak”菜單命令
1、修改自動(dòng)生成的菜單項(xiàng)。打開“資源管理器”→“File”菜單→增加“Speak”命令項(xiàng)→資源ID設(shè)置為“IDM_SPEAK”。
四、實(shí)現(xiàn)speak功能 第1步:初始化COM 第2步:創(chuàng)建語音對(duì)象設(shè)置聲音 第3步:調(diào)用speak函數(shù) 第4步:設(shè)置感興趣的事件 第5步:確定事件類型 第6步:響應(yīng)事件
1、初始化COM if(FAILED(CoInitialize(NULL)))
{
return FALSE;
}
2、創(chuàng)建語音對(duì)象設(shè)置聲音
一旦com運(yùn)行后,下一步就是要?jiǎng)?chuàng)建語音對(duì)象。這里需要用到CoCreatInstance().為簡潔和方便起見,這個(gè)例子使用了特別的處理方式。首先,它使用initinstance()來初始化聲音。這是最簡單的初始化過程。第二,這個(gè)語音對(duì)象是全局性的。第三,語音對(duì)象建立之后,對(duì)象本省和用到的內(nèi)存立即被釋放。最后,如果初始化失敗,應(yīng)用程序應(yīng)該有更強(qiáng)有力的檢查錯(cuò)誤機(jī),更廣泛的報(bào)告和更詳細(xì)的資料。
程序清單2:
ISpVoice *pVoice;//SAPI voice(初始化模塊)……
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){。。。
// Instead of using IDC_TEST, use the identifier of menu resource of the current application.SetMenu(hWnd, LoadMenu(hInstance, MAKEINTRESOURCE(IDC_TEST)));ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);//Initialize SAPI
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice,(void **)&pVoice);
if(SUCCEEDED(hr))
{
pVoice->SetInterest(SPFEI(SPEI_WORD_BOUNDARY),SPFEI(SPEI_WORD_BOUNDARY));
pVoice->SetNotifyWindowMessage(hWnd, WM_USER, 0, 0);
}
else
return FALSE;
3、調(diào)用Speak函數(shù)實(shí)現(xiàn)“講話”的功能
要讓計(jì)算機(jī)講話只需一句簡單的調(diào)用命令,要講話的內(nèi)容用一個(gè)參數(shù)傳給語音對(duì)象,常是從一個(gè)對(duì)話框或一個(gè)文件獲取字符串的。另外,字符串也可以從一個(gè)流中獲取,但就要使用另外一個(gè)調(diào)用 ispvoice:: speakstream。Speak函數(shù)的調(diào)用代碼是放在windows的消息處理函數(shù)wndproc()相應(yīng)的消息處理中的。從文件菜單選擇Speak命令,計(jì)算機(jī)將開始講: “我很高興發(fā)言?!? 程序代碼3: // FUNCTION: WndProc(HWND, unsigned, WORD, LONG)。。。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
。。。WCHAR tempString[30]。。。
switch(wmId){。。。case IDM_SPEAK:
wcscpy(theString, L“I am glad to speak.”);
pVoice->Speak(theString, SPF_ASYNC, NULL);
pVoice->Speak(L“I am glad to speak”, SPF_ASYNC, NULL);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);}
4、設(shè)置事件
像其它大部分windows應(yīng)用程序一樣,在COM組件中有很多交互動(dòng)作,這些交互信息將以信息形式出現(xiàn)。sapi是也一樣。信息是在TTS或SR引擎中產(chǎn)生的,某個(gè)特定的事件也是在那里開始和結(jié)束的.很多時(shí)候, sapi或sapi的引擎產(chǎn)生的事件是對(duì)應(yīng)用程序有用的。舉例來說,當(dāng)一個(gè)識(shí)別過程開始的時(shí)候,應(yīng)用程序會(huì)得到相應(yīng)的通知或消息,最終的用戶也可以得到相應(yīng)的通知。
(1)首先,需要接收一個(gè)來自sapi的或sapi的引擎的消息。這個(gè)消息是程序自定義的.但是,所有的活動(dòng)sapi都使用相同的消息通知應(yīng)用程序;
(2)得到通知后,應(yīng)用程序要檢查一個(gè)事件結(jié)構(gòu),這個(gè)事件結(jié)構(gòu)是由SAPI完成的.利用這個(gè)結(jié)構(gòu)來確定具體是發(fā)生了什么事件(見第五步驟).(3)設(shè)定感興趣的事件。程序可以用setinterest 來設(shè)置感興趣的事件。默認(rèn)情況下,TTS不向程序發(fā)出任何事件通知。也就是說,如果程序忽略了setinterest的調(diào)用,TTS應(yīng)用程序是得不到任何事件通知的。
(4)設(shè)定消息。不論以何種事件,應(yīng)用程序都應(yīng)該將一個(gè)消息與sapi聯(lián)系起來。程序通過調(diào)用setnotifywindowmessage來完成這個(gè)任務(wù),本例使用WM_USER消息。
程序清單4:
//Initialize SAPI HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice,(void **)&pVoice);if(SUCCEEDED(hr)){
pVoice->SetInterest(SPFEI(SPEI_WORD_BOUNDARY),SPFEI(SPEI_WORD_BOUNDARY));
pVoice->SetNotifyWindowMessage(hWnd, WM_USER, 0, 0);
} else return FALSE;
5、確定事件。使用事件來工作需要2個(gè)步驟。
(1)首先是使用一個(gè)簡單和標(biāo)準(zhǔn)的做法設(shè)置和使用Windows消息。消息是被發(fā)送到程序的消息環(huán)中的。在這個(gè)例子里,wndproc()接收wm_user訊息。一旦訊息是捕獲,其余事情由sapi函數(shù)來完成。
(2)第二個(gè)步驟是確定哪些消息發(fā)生了。Sapi使用 spevent和getevents方法來確定具體的事件和消息。通過這兩個(gè)函數(shù)可以獲取指定的事件信息和事件類型。在SPEVENT的成員eeventid恰恰是setinterest所設(shè)定的值。該spevent結(jié)構(gòu)必須在首次使用時(shí)被初始化。而且重新使用之前也要被清除。可以使用spclearevent來完成清除工作。
程序清單5:
switch(message)
{
case WM_COMMAND:
wmId
= LOWORD(wParam);
wmEvent = HIWORD(wParam);
。。。
case WM_USER: //處理speak命令的窗口
SPEVENT eventItem;
memset(&eventItem, 0,sizeof(SPEVENT));
while(pVoice->GetEvents(1, &eventItem, NULL)== S_OK)
{
switch(eventItem.eEventId)
{
case SPEI_WORD_BOUNDARY :
SPVOICESTATUS eventStatus;
pVoice->GetStatus(&eventStatus, NULL);
ULONG start, end;
start = eventStatus.ulInputWordPos;
end = eventStatus.ulInputWordLen;
wcsncpy(tempString, theString + start , end);
tempString[ end ] = '/0';
//MessageBoxW(hWnd, tempString, L“GUIApp”, MB_OK|MB_ICONWARNING);
MessageBoxW(hWnd, tempString, L“SayApp”, MB_OK|MB_ICONWARNING);
break;
default:
break;
}
SpClearEvent(&eventItem);
}
break。。。case WM_DESTROY:
if(pVoice)
{
pVoice->Release();
pVoice = NULL;
}
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
6、響應(yīng)事件。在這個(gè)例子中,應(yīng)用程序使用spei_word_boundary消息來取定每一個(gè)單詞。可以用getstatus函數(shù)和spvoicestatus結(jié)構(gòu)來獲取更詳細(xì)的信息。一個(gè)獨(dú)立的單詞,可以用事件發(fā)生時(shí)的第一個(gè)字母和最后一個(gè)字母的位置來確定。在這個(gè)例子中,使用MessageBoxW來顯示所講的單詞。在說話過程中,屏幕是實(shí)時(shí)更新的,并顯示實(shí)際發(fā)言的文字。這個(gè)特點(diǎn)是由spf_async標(biāo)志控制的。如果在Speak函數(shù)中使用NULL參數(shù),而不是SPF_ASYNC參數(shù),那樣就要等整句話說完之后,才顯示消息框。pVoice->Speak(theString, SPF_ASYNC, NULL);
//釋放語音對(duì)象
程序代碼6:
case SPEI_WORD_BOUNDARY : SPVOICESTATUS eventStatus;
pVoice->GetStatus(&eventStatus, NULL);
ULONG start, end;
start = eventStatus.ulInputWordPos;
end = eventStatus.ulInputWordLen;
wcsncpy(tempString, theString + start , end);
tempString[ end ] = '/0';MessageBoxW(hWnd, tempString, L“GUIApp”, MB_OK|MB_ICONWARNING);break;總結(jié):
最后,總結(jié)一下這個(gè)例子的主要知識(shí)點(diǎn): 1,初始化COM: CoInitialize和CoUninitialize 2,建立語音對(duì)象實(shí)例:CoCreateInstance 3,講話:Speak 4,設(shè)置感興趣的事件:SetInterest
設(shè)定SAPI返回的消息 :setnotifywindowmessage 5,消息來時(shí),確定事件類型:GetEvents 清除事件結(jié)構(gòu):SpClearEvent 6,響應(yīng)事件時(shí),用GetStatus確定當(dāng)前SAPI的狀態(tài)
第二篇:實(shí)驗(yàn)二 語音交互設(shè)計(jì)-TTS
文本語音(Text-to-Speech,以下簡稱TTS),它的作用就是把通過TTS引擎把文本轉(zhuǎn)化為語音輸出。簡單介紹如何運(yùn)用Microsoft Speech SDK 建立自己的文本語音轉(zhuǎn)換應(yīng)用程序。Microsoft Speech SDK是微軟提供的軟件開發(fā)包,提供的Speech API(SAPI)主要包含兩大方面:
1.API for Text-to-Speech:微軟TTS引擎的接口,通過它我們可以很容易地建立功能強(qiáng)大的文本語音程序 ;
2.API for Speech Recognition:與TTS相對(duì)應(yīng)的語音識(shí)別
為了在VC中使用這SDK,必需在工程中添加SDK的include和lib目錄,為免每個(gè)工程都添加目錄,最好的辦法是在VC的Option->Directoris加上SDK的include和lib目錄。
一、TTS—基于控制臺(tái)
這是一個(gè)基于控制臺(tái)的語音程序示例。這個(gè)例子中,使用了最簡單的COM框架,并讓計(jì)算機(jī)“說”一句簡單的話。同時(shí)介紹了如何使用XML標(biāo)簽來對(duì)語音進(jìn)行修改。主要包括如下步驟:--Step1:建立工程項(xiàng)目--Step2:初始化COM接口--Step3:創(chuàng)建語音對(duì)象--Step4:開始說話
--Step5:用XML標(biāo)簽修改語音
1、Step1:建立工程
(1)利用Visual Studio的開發(fā)環(huán)境中的應(yīng)用程序向?qū)Ы⒁粋€(gè)Win32控制臺(tái)(console)程序。在創(chuàng)建過程中時(shí),選擇一個(gè)簡單的“Hello world”應(yīng)用程序工程項(xiàng)目。
(2)創(chuàng)建完成后,打開“stdafx.h”頭文件,把以下的內(nèi)容粘貼在“#include
#define _ATL_APARTMENT_THREADED #include
(4)再設(shè)置sapi.lib的路徑。在同樣的“Settints”對(duì)話框中,選擇“Link”標(biāo)簽頁;在“Category”下拉列表中選擇“Input”;在“Additional library path”編輯框中填入sapi.lib的路徑:“F:Program FilesMicrosoft Speech SDK 5.1Libi386 ;
(5)在同樣的“Link”標(biāo)簽頁中的“Object/library modules”欄中增加“sapi.lib”,注意,這里的各個(gè)庫名字之間用空格隔開。
Step2:初始化COM接口
SAPI 是基于COM框架的,所以使用SAPI相關(guān)函數(shù)之前和SAPI對(duì)象被激活時(shí),程序必須初始化COM接口。下面的代碼雖然除了初始化之外沒有任何其它的功能,但是它確保COM能被正常啟動(dòng)。程序清單2:
#include
::CoUninitialize();return TRUE;} Step3:創(chuàng)建語音對(duì)象
COM 運(yùn)行環(huán)境建立起來之后,接下來創(chuàng)建語音對(duì)象。語音對(duì)象是一個(gè)簡單的COM對(duì)象。另外,語音對(duì)象使用很多智能的默認(rèn)配置,在自身初始化過程中,SAPI自動(dòng)為其配置大多數(shù)的默認(rèn)值,語音對(duì)象創(chuàng)建完成后就可以立即被程序使用。這些默認(rèn)的參數(shù)是從“控制面板”的“語言屬性”中獲得的,包括語言種類等。所有的默認(rèn)參數(shù),包括顯見的和非顯見的(比如說話速度,基音周期等),都可以用編程的方式改變,或從控制面板中的語言屬性中修改。
#include
if(FAILED(::CoInitialize(NULL)))return FALSE;HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice,(void **)&pVoice);if(SUCCEEDED(hr)){ pVoice->Release();pVoice = NULL;// pVoice設(shè)置為NULL空值不是必須的,但這樣做有助于檢查錯(cuò)誤,也可以作為一個(gè)提示,表示這個(gè)指針的空間已經(jīng)分配了或者被釋放了。} ::CoUninitialize();return TRUE;} 注:SDK提供的是基于COM封裝的,只要按部就班地用CoInitialize()、CoCreateInstance()獲取IspVoice接口就夠了,需要注意的是初始化COM后,程序結(jié)束前一定要用CoUninitialize()釋放資源。
SAPIStep4:開始說話
上述程序的流程是獲取IspVoice接口,然后用ISpVoice::Speak()把文本輸出為語音,只需調(diào)用“Speak”函數(shù)即可。
HRESULT Speak(const WCHAR *pwcs,DWORD dwFlags,ULONG *pulStreamNumber);
(1)*pwcs 輸入的文本字符串,必需為Unicode,如果是ansi字符串必需先轉(zhuǎn)換為Unicode.(2)dwFlags 用來標(biāo)志Speak的方式,其中SPF_IS_XML 表示輸入文本含有XML標(biāo)簽。
(3)PulStreamNumber 輸出,用來獲取去當(dāng)前文本輸入的等候播放隊(duì)列的位置,只有在異步模式才有用。代碼如下: #include
TTS API功能最強(qiáng)大之處在于能夠分析XML標(biāo)簽,通過XML標(biāo)簽設(shè)置音量、音調(diào)、延長、停頓,幾乎可以使輸出達(dá)到自然語音效果。前面已經(jīng)提過,把Speak參數(shù)dwFlags設(shè)為SPF_IS_XML,TTS引擎就會(huì)分析XML文本,輸入文本并不需要嚴(yán)格遵守W3C的標(biāo)準(zhǔn),只要含有XML標(biāo)簽就行了,在下面的例子中,后部分的語音基音頻率會(huì)比前部分的低10個(gè)等級(jí)。
#include but the pitch drops half way through”, SPF_IS_XML, NULL);pVoice->Release();pVoice = NULL;} ::CoUninitialize();return TRUE;} 學(xué)習(xí)心得 老師整體講得挺好,從中學(xué)習(xí)到了交互設(shè)計(jì)的精髓,即是“不要讓用戶思考”,可用性是交互設(shè)計(jì)的基本目標(biāo)。從中也了解了Web用戶的行為特點(diǎn),了解了一般Web可用性的基本要素以及比較專業(yè)的設(shè)計(jì)迭代和設(shè)計(jì)驗(yàn)證過程?;剡^頭來對(duì)比之前做的項(xiàng)目,參照著也發(fā)現(xiàn)了不少問題和缺點(diǎn),尤其是在設(shè)計(jì)流程上,也有時(shí)間因素沒法花兩三個(gè)禮拜要做設(shè)計(jì)迭代和驗(yàn)證。我們的原型和設(shè)計(jì)缺乏對(duì)最終用戶群的設(shè)計(jì)考慮,出發(fā)點(diǎn)尚處在以自我觀點(diǎn)為決策的階段,沒有為最終用戶設(shè)計(jì),這點(diǎn)是我們亟需改進(jìn)的。除此之外,也講到了web交互設(shè)計(jì)的一般法則,對(duì)我們以后開發(fā)也很有裨益。 用戶體驗(yàn)的提高需要各方的努力,不是光靠UE設(shè)計(jì)師一個(gè)人就能達(dá)到。一個(gè)項(xiàng)目的用戶體驗(yàn)好與壞,需要受眾用戶、產(chǎn)品經(jīng)理、業(yè)務(wù)分析師、視覺設(shè)計(jì)師、開發(fā)人員一起協(xié)同努力才能在一個(gè)有限的時(shí)間內(nèi)達(dá)成。更多得可能還是需要在研發(fā)流程和規(guī)范上下藥,提高用戶體驗(yàn)設(shè)計(jì)的重視度,才能貫徹相同的理念互相協(xié)同起來,達(dá)到高用戶體驗(yàn)的目標(biāo)。 用戶界面UI設(shè)計(jì)大作業(yè)要求 一、題目要求 1、每人為班級(jí)設(shè)計(jì)一個(gè)網(wǎng)站首頁。 2、如果出現(xiàn)兩人雷同,兩人都以“0分”計(jì)算。 3、首頁以psd格式保存。 4、將自己設(shè)計(jì)的班級(jí)首頁轉(zhuǎn)成html網(wǎng)頁文件保存。 5、完成大作業(yè)報(bào)告并打印。 說明:最后上交的內(nèi)容有“.psd”的原圖、“.jpg”的效果圖、“.html”的網(wǎng)頁文件、“.doc”的電子版大作業(yè)報(bào)告以及打印好的大作業(yè)報(bào)告。 二、網(wǎng)站首頁設(shè)計(jì)要求 1、首頁中要包含班級(jí)的logo。(logo自己設(shè)計(jì)) 2、首頁中要包含班級(jí)的名稱。 3、首頁中要包含導(dǎo)航欄。(導(dǎo)航的個(gè)數(shù)最少5個(gè)) 4、首頁中要包含自己制作的按鈕和處理的圖片。 5、首頁中要包含版權(quán)。(制作人名稱、班級(jí)) 6、首頁的顏色要和諧美觀。 7、首頁的布局要清晰合理。 三、大作業(yè)報(bào)告格式的要求 1、使用統(tǒng)一的封皮。 2、使用B5紙打印。 3、報(bào)告中主要寫制作過程,類似書上每章的實(shí)例制作步驟。 4、報(bào)告中文字要求,字體“宋體”、字號(hào)“小四”。 5、報(bào)告中每行文字之間的行間距為“1.5倍行間距”。 6、報(bào)告中每段文字前后段間距都為“0”。 7、報(bào)告中的每張?zhí)麍D都要有標(biāo)號(hào)和名稱,格式為“宋體、小五”,段前段后都是“0.5倍行間距”。 8、報(bào)告中的貼圖大小都調(diào)整到“高度6厘米,寬度8厘米”。 9、報(bào)告中不要出現(xiàn)大段空白。 10、報(bào)告中除封皮以外,都要有頁碼。 四、大作業(yè)報(bào)告內(nèi)容要求 大作業(yè)報(bào)告中要涵蓋三方面的內(nèi)容,如下所示: 1、設(shè)計(jì)說明 主要敘述,顏色的選取以及頁面的布局情況。 2、制作步驟 1)背景的制作 2)logo的制作 3)導(dǎo)航的制作 4)其他板塊的制作 5)結(jié)果圖 3、總結(jié) 基于用戶體驗(yàn)的手機(jī)產(chǎn)品交互設(shè)計(jì)原則 一、用戶體驗(yàn)信息收集 在討論手機(jī)的交互設(shè)計(jì)方法之前,需要先對(duì)手機(jī)的用戶使用習(xí)慣有一些基本的了解,需要對(duì)手機(jī)的用戶體驗(yàn)信息做一些收集整理。收集用戶體驗(yàn)信息首先需要確定兩個(gè)問題:一是確定目標(biāo)用戶群體;二是確定信息收集的方法和途徑。 在確定目標(biāo)用戶群體的時(shí)候,很顯然的是,已有產(chǎn)品有過使用和交互經(jīng)驗(yàn),具備該產(chǎn)品或系統(tǒng)的交互體驗(yàn)的用戶,相比較于那些沒有體驗(yàn)的用戶,可以為設(shè)計(jì)提供更多更有效的信息。因此在收集用戶體驗(yàn)信息時(shí),應(yīng)該首先考慮所需設(shè)計(jì)的產(chǎn)品的用戶或是有過類似產(chǎn)品使用經(jīng)驗(yàn)的用戶。在理想的情況下,當(dāng)用戶體驗(yàn)產(chǎn)品的交互時(shí),設(shè)計(jì)師可以通過某種技術(shù)或是研究方法獲得用戶的全部感官印象,掌握他們的情感體驗(yàn)。然而這些主觀的體驗(yàn)信息很難用實(shí)驗(yàn)室的方法收集或是客觀的科學(xué)描述表達(dá)出來。因此我們只能尋求貼近實(shí)際的近距離接觸用戶體驗(yàn)的方法,就是深入訪談和現(xiàn)場觀察。 我們需要調(diào)研的信息有: 1.硬件部分: ? ? ? ? 手機(jī)的持機(jī)模式(右手操作、左手操作、雙手操作); 手機(jī)的操作模式(手指觸控、筆觸、按鍵、滾輪、長按); 兩種操作模式下的輸入方式(全鍵盤、九鍵、觸屏鍵盤、手寫); 信息反饋形式(屏幕信息輸出、聲音、振動(dòng)、燈光)對(duì)用戶的影響; 2.軟件部分: ? ? ? ? 用戶對(duì)屏幕信息結(jié)構(gòu)的認(rèn)識(shí)(空間位置、信息排列順序、信息的分類) 用戶對(duì)信息導(dǎo)航的使用(菜單、文件夾管理、搜尋特定文件) 用戶對(duì)信息傳達(dá)的理解(圖形信息、文字信息) 用戶對(duì)交互反饋的獲知(每個(gè)操作是否有明確的反饋) 3.積極的用戶體驗(yàn): ? ? ? ? ? ? ? 特殊交互模式帶來的新奇感受——有趣 簡潔的操作步驟和有效的信息提醒方式——信任感 軟件運(yùn)行速度,信息處理過程——操縱感和成就感 允許誤操作,有效引導(dǎo)——安全感 交互過程中的完美感官體驗(yàn)(視覺、聽覺) 類似于電腦操作過程的交互(有電腦使用經(jīng)驗(yàn)的用戶)——熟悉感和成就感 品牌元素在交互上的延續(xù)性——熟悉感和優(yōu)越感 4.消極的用戶體驗(yàn): ? 系統(tǒng)出錯(cuò)、沒有提示信息——壓力、緊張和茫然 ? ? ? ? 缺少誤操作的補(bǔ)救機(jī)制——挫敗感、壓力 交互步驟的繁復(fù)難記——挫敗感 提示信息的不明確(不符合用戶模型)——茫然 過程處理時(shí)間過長——焦慮 二、用戶分類 1.依據(jù)用戶的需求可將智能手機(jī)的用戶分為兩類: 1.1 過程為主的用戶(processoriented end user)過程為主的用戶的典型例子是電玩族,他們追求的終級(jí)目標(biāo)就是視覺聽覺的沖擊和享受,最終游戲的結(jié)果反而變得不是那么重要了。此類設(shè)計(jì)對(duì)視覺和創(chuàng)意的要求是極為挑剔的,絕大多數(shù)設(shè)計(jì)師都有深厚的美術(shù)功底。 1.2 結(jié)果為主的用戶(result oriented end user)然而,與結(jié)果為主的用戶設(shè)計(jì)相比,過程為主的用戶的市場和受眾都要小的多。結(jié)果為主的用戶不在乎用什么樣的方式完成任務(wù),但是任務(wù)必須以最短的時(shí)間,以最簡潔的方式,最精確的運(yùn)算結(jié)果來完成。對(duì)于此類用戶的交互設(shè)計(jì)人員來講,更重要的是設(shè)計(jì)更合理的任務(wù)邏輯流程(logical task flow),以期最大幅度的符合人腦的思考方式和認(rèn)知過程(cognitive process)。2.依據(jù)用戶的使用經(jīng)驗(yàn)可將用戶可以分類為: 2.1 新手用戶 指剛剛開始接觸和使用智能手機(jī)的用戶,對(duì)智能手機(jī)的操作系統(tǒng)沒有過使用經(jīng)驗(yàn),對(duì)計(jì)算機(jī)及應(yīng)用程序的一般用法也沒有太多的了解,但有一定的手機(jī)使用經(jīng)驗(yàn)。2.2 中級(jí)用戶 使用智能手機(jī)有一定的時(shí)間,換過至少一個(gè)智能手機(jī)。對(duì)智能手機(jī)的部分操作相對(duì)熟悉,但經(jīng)常使用的軟件數(shù)量較少,并不完全熟悉智能手機(jī)系統(tǒng)的所有功能,對(duì)界面交互所必需的語法信息了解較少。2.3 專家用戶 有過相當(dāng)長時(shí)間的智能手機(jī)使用歷史,更換過幾次智能手機(jī),對(duì)手機(jī)的交互和電腦的操作都非常了解,經(jīng)常主動(dòng)尋找更簡潔和快速的交互方式。 一般來說,中級(jí)用戶和專家用戶在長期使用某部分交互時(shí)遇到的問題更具有代表性,而新手用戶提出的問題則更有利于設(shè)計(jì)人員認(rèn)清用戶與智能手機(jī)交互時(shí)的認(rèn)知過程。 三、交互設(shè)計(jì)原則 對(duì)應(yīng)用戶體驗(yàn)信息的收集和用戶分類,我們可以總結(jié)出來智能手機(jī)上交互設(shè)計(jì)的方法和要點(diǎn)。1.硬件交互設(shè)計(jì) ? ? ? ? 根據(jù)人機(jī)工程學(xué)原理設(shè)計(jì)按鍵大小等硬件交互要素; 盡可能提供多種輸入方式,包括鍵盤輸入和手寫輸入,鍵盤包括數(shù)字鍵盤和全鍵盤。合理設(shè)計(jì)鍵盤使其符合用戶的使用習(xí)慣; 考慮環(huán)境對(duì)用戶操作的影響。例如嘈雜的環(huán)境下提供震動(dòng)的提示方式,黑暗又需要保持安靜的環(huán)境下選擇指示燈閃爍發(fā)光的方式提示用戶。 同樣需要考慮環(huán)境因素對(duì)用戶的影響,利用機(jī)械結(jié)構(gòu)多樣化設(shè)計(jì)實(shí)現(xiàn)單手操作模式和雙手操作模式的切換,需要設(shè)計(jì)切換的便捷方式、屏幕方向的變化和鍵盤的轉(zhuǎn)換等等硬件交互要素的變化。 ? 設(shè)計(jì)新奇的交互模式,將大大提升用戶體驗(yàn),例如sony的滾輪導(dǎo)航模式,和蘋果的觸點(diǎn)導(dǎo)航鍵(旋轉(zhuǎn)和點(diǎn)擊),都獲得了巨大的商業(yè)成功。 2.信息交互設(shè)計(jì) ? ? 信息項(xiàng)目的排布密度合理,字體排列、圖標(biāo)排列的方式具有可調(diào)性,設(shè)計(jì)合適的方式來突出重點(diǎn)信息; 使用用戶的語言來傳達(dá)信息,而非技術(shù)的語言。有效地使用“隱喻”。例如windows里面的“記事本”就是一個(gè)很好的隱喻例子,因?yàn)樗腿藗兪煜さ娜粘8拍盥?lián)系在一起,所以用戶可以很容易的理解這是一個(gè)什么工具。好的隱喻可以起到快捷的說明作用; ? ? ? 字體大小、顏色、圖標(biāo)設(shè)計(jì)等,都決定可讀性的好與壞; 需要保持一致性的不光有每個(gè)功能軟件或是服務(wù)的圖標(biāo)外觀,更包括開機(jī)動(dòng)畫、細(xì)節(jié)元素和無形框架的一致,都需要貼合用戶行為習(xí)慣進(jìn)行設(shè)計(jì); 盡量避免同一個(gè)元素包含太多的信息,例如,顏色的使用不要包含太多信息暗示,因?yàn)橛脩舨灰欢〞?huì)注意到或是理解某種顏色所包含的暗示。 3.軟件交互設(shè)計(jì) ? ? ? ? ? 導(dǎo)航功能。隨時(shí)轉(zhuǎn)移功能,很容易從一個(gè)功能跳到另外一個(gè)功能; 允許工作中斷。例如當(dāng)用戶編輯短信的時(shí)候,收到短信或電話,完成后回來仍能夠找到剛才正寫的短信息; 方便退出。例如,提供兩種退出方式,按一個(gè)鍵完全退出,或是一層一層的退出。 讓用戶知道自己當(dāng)前的位置,使其做出下一步行動(dòng)的決定; 提供快速反饋,減少不必要的潛在等待時(shí)間。在任務(wù)交予系統(tǒng)處理或計(jì)算的時(shí)候,會(huì)有一段潛在的用戶等待時(shí)間,一般我們會(huì)通過合適的等待提示讓用戶知道現(xiàn)在正處于系統(tǒng)潛在工作狀態(tài),而不至于讓用戶頻繁地重復(fù)操作,使系統(tǒng)更慢;或者合理通過多任務(wù)切換處理避免這樣的等待間隔。通過這些方法可以讓用戶回避這種的無效時(shí)間,從而提高交互效率。 ? ? ? 良好的防錯(cuò)機(jī)制。誤操作后,系統(tǒng)提供有針對(duì)性的清晰提示。即使發(fā)生錯(cuò)誤操作,也能幫助用戶保存好之前的操作記錄,避免用戶重新再來; 提供了解用戶操作行為的途徑,可以更好的幫助改善系統(tǒng)的操作; 通過縮短操作距離和增加目標(biāo)尺寸來加速目標(biāo)交互操作。 4.體驗(yàn)交互設(shè)計(jì) ? ? ? ? ? 讓用戶控制交互過程?!跋乱徊健薄ⅰ巴瓿伞?,面對(duì)不同層次提供多種選擇,給不同層次的用戶提供多種可能性; 預(yù)設(shè)置的默認(rèn)狀態(tài)應(yīng)該具有一定共通性和智能性,并對(duì)用戶操作起到協(xié)助或提示的作用;此外,還應(yīng)留給用戶修改和設(shè)置默認(rèn)狀態(tài)的權(quán)限; 圖標(biāo)、多媒體設(shè)計(jì)、細(xì)節(jié)設(shè)計(jì)和附加功能設(shè)計(jì)為體驗(yàn)增值,有效提升體驗(yàn)度; 視覺設(shè)計(jì),例如開關(guān)機(jī)動(dòng)畫、界面顯示效果等; 多方面考慮用戶信息的私密性,提供有效的保護(hù)機(jī)制,例如指紋識(shí)別密碼模式。 四、總結(jié) 體驗(yàn)是一個(gè)比較虛的概念,很難量化很難評(píng)估,所以也導(dǎo)致很多小的無線產(chǎn)品開發(fā)團(tuán)隊(duì)干脆放棄了對(duì)產(chǎn)品用戶體驗(yàn)的把握,甚至不需要設(shè)置一個(gè)專門的呃交互設(shè)計(jì)師職位來改善產(chǎn)品的交互體驗(yàn),這對(duì)于成長型的公司是可以容忍的,但是對(duì)于要想做出精品,長期處于市場不敗之地的公司就顯得不夠嚴(yán)謹(jǐn)了。手機(jī)互聯(lián)網(wǎng)是未來的發(fā)展趨勢(shì),手機(jī)產(chǎn)品也對(duì)交互設(shè)計(jì)提出了更多的要求,簡單探析了一下從用戶體驗(yàn)出發(fā)來進(jìn)行手機(jī)產(chǎn)品交互設(shè)計(jì)的方法原則,之后還是需要一個(gè)比較成型的交互體驗(yàn)評(píng)估體系的。第三篇:用戶交互設(shè)計(jì)學(xué)習(xí)心得
第四篇:用戶界面UI設(shè)計(jì)大作業(yè)要求
第五篇:基于用戶體驗(yàn)的手機(jī)產(chǎn)品交互設(shè)計(jì)原則