日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

IBM Voice CMDMenu语音命令控制技术 适用于Emmbbed IBM Viavoice的语音菜单,语音拨号

發(fā)布時(shí)間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IBM Voice CMDMenu语音命令控制技术 适用于Emmbbed IBM Viavoice的语音菜单,语音拨号 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分享一下我老師大神的人工智能教程!零基礎(chǔ),通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉(zhuǎn)載本篇文章。分享知識(shí),造福人民,實(shí)現(xiàn)我們中華民族偉大復(fù)興!

class CVCmdMenuDlg;

class CIVCmdNotifySink: public IVCmdNotifySink
{
private:
?? DWORD m_dwRefCnt;???? /* count how many people our using us (the object)*/
?CVCmdMenuDlg *pDlg;??/* used to send notifications back to demo dialog object */

public:
?? CIVCmdNotifySink (void);?????????????????????? /* obligatory constructor*/
?? ~CIVCmdNotifySink (void);????????????????????? /* obligatory destructory*/
?CIVCmdNotifySink( CVCmdMenuDlg *pDlgInit );??/* overloaded constructor for this demo */

?? /* IUnknown */
?? STDMETHODIMP QueryInterface (REFIID, LPVOID FAR*);
?? STDMETHODIMP_(ULONG)AddRef(void);??????????????????? /* increment? count*/
?? STDMETHODIMP_(ULONG)Release(void);?????????????????? /* decrements count*/

?? /* IVCCmdNotifySink member functions */
?? STDMETHODIMP CommandRecognize (DWORD, PVCMDNAME, DWORD, DWORD, PVOID, DWORD, PSTR, PSTR);
?? STDMETHODIMP CommandOther (PVCMDNAME, PTSTR);
?? STDMETHODIMP CommandStart (void);
?? STDMETHODIMP MenuActivate (PVCMDNAME, BOOL);
?? STDMETHODIMP UtteranceBegin (void);
?? STDMETHODIMP UtteranceEnd (void);
?? STDMETHODIMP VUMeter (WORD);
?? STDMETHODIMP AttribChanged (DWORD);
?? STDMETHODIMP Interference (DWORD);
};

typedef CIVCmdNotifySink* PCIVCmdNotifySink;

?

?


#include "stdafx.h"
#include "winreg.h"???// supports reading the registry
#include "speech.h"???// defines SAPI structures, interfaces
#include "VCmdNfy.h"
#include "VCmdMenu.h"
#include "VCmdDlg.h"
#include "initguid.h"??// required by references to GUIDs
#include "SrWrapEn.h"??// defines IBM speech engine GUIDs

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

// external for accessing the application object
extern CVCmdMenuApp theApp;

/
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
?CAboutDlg();

// Dialog Data
?//{{AFX_DATA(CAboutDlg)
?enum { IDD = IDD_ABOUTBOX };
?//}}AFX_DATA

?// ClassWizard generated virtual function overrides
?//{{AFX_VIRTUAL(CAboutDlg)
?protected:
?virtual void DoDataExchange(CDataExchange* pDX);??? // DDX/DDV support
?//}}AFX_VIRTUAL

// Implementation
protected:
?//{{AFX_MSG(CAboutDlg)
?//}}AFX_MSG
?DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
?//{{AFX_DATA_INIT(CAboutDlg)
?//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
?CDialog::DoDataExchange(pDX);
?//{{AFX_DATA_MAP(CAboutDlg)
?//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
?//{{AFX_MSG_MAP(CAboutDlg)
??// No message handlers
?//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/
// CVCmdMenuDlg dialog

CVCmdMenuDlg::CVCmdMenuDlg(CWnd* pParent /*=NULL*/)
?: CDialog(CVCmdMenuDlg::IDD, pParent)
{
?// don't forget to init pointers being tested later on !!! 11/05/96 pwa
?gpIVCmdMenu=NULL;
?gpIVoiceCommand=NULL;
?
?//{{AFX_DATA_INIT(CVCmdMenuDlg)
?m_strRecoEcho = _T("");
?//}}AFX_DATA_INIT
?// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
?m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CVCmdMenuDlg::DoDataExchange(CDataExchange* pDX)
{
?CDialog::DoDataExchange(pDX);
?//{{AFX_DATA_MAP(CVCmdMenuDlg)
?DDX_Control(pDX, IDC_STOP, m_buttonDeactivate);
?DDX_Control(pDX, IDC_START, m_buttonActivate);
?DDX_Control(pDX, IDC_PHRASELIST, m_listPhrase);
?DDX_Text(pDX, IDC_RECOEOCHO, m_strRecoEcho);
?//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CVCmdMenuDlg, CDialog)
?//{{AFX_MSG_MAP(CVCmdMenuDlg)
?ON_WM_SYSCOMMAND()
?ON_WM_PAINT()
?ON_WM_QUERYDRAGICON()
?ON_BN_CLICKED(IDC_START, OnActivate)
?ON_BN_CLICKED(IDC_STOP, OnDeactivate)
?ON_WM_CLOSE()
?//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/
// CVCmdMenuDlg message handlers

// Return value of UseSpeech in registry, or -1 on read error.
int CVCmdMenuDlg::GetUseSpeech()
{
?HKEY? hKey;
?DWORD dwType, dwSize, dwVal;
?CString s;

?dwType = REG_DWORD;
?dwSize = sizeof(DWORD);

?s.LoadString( IDS_KEYVOICE );

?if( ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER, s.GetBuffer(0), 0, KEY_READ, &hKey) ) {
??CString sMsg;
??AfxFormatString1( sMsg, IDS_ERROR14, s.GetBuffer(0) );
??AfxMessageBox( sMsg );
??return -1;
?}

?s.LoadString( IDS_VALUE );
?if( ERROR_SUCCESS != RegQueryValueEx (hKey, s.GetBuffer(0), 0, &dwType, (LPBYTE)&dwVal, &dwSize) ) {
??CString sMsg;
??AfxFormatString1( sMsg, IDS_ERROR15, s.GetBuffer(0) );
??AfxMessageBox( sMsg );
??return -1;
?}

?RegCloseKey (hKey);

?return (int)dwVal;
}

// Create a pointer to a voice command interface
// On error, show message box and return 0.
// On success, return valid pointer.
PIVOICECMD CVCmdMenuDlg::CreatePIVCmd()
{
?PIVOICECMD pIVCmd = 0;

?if ( S_OK != CoCreateInstance
??? (CLSID_VCmd,???? //? voice command object class identifier
???? NULL,
???? CLSCTX_LOCAL_SERVER,
???? IID_IVoiceCmd,?// voice command object interface identifier
???? (LPVOID*)&pIVCmd //ptr to voice command object interface
???? )
??? )
??AfxMessageBox( IDS_ERROR1 );
?
?return pIVCmd;
}

// See if default site is using IBM speech engine
// If not, ask user if we can change it.
// Show error message and return FALSE on any error
// Assume: gpIVoiceCommand has already been registered
BOOL CVCmdMenuDlg::CheckSelectIBMEngine()
{

?BOOL bRc = FALSE;
?PIVCMDATTRIBUTES pIVCmdAttr = 0;
?GUID modeGuid;
?BOOL bMBoxRc = FALSE;
?
?if ( !gpIVoiceCommand )
??return FALSE;

?if ( NOERROR != gpIVoiceCommand->QueryInterface(IID_IVCmdAttributes, (LPVOID FAR *)&pIVCmdAttr) )
??AfxMessageBox( IDS_ERROR16 );
?else {
??if ( NOERROR != pIVCmdAttr->SRModeGet(&modeGuid) )
???AfxMessageBox( IDS_ERROR17 );
??else {
???//check for US English navigation mode
????if ( !bRc && ::IsEqualGUID(CLSID_SREngineEnumIBMContinuousModeUS,modeGuid) ) {
????theApp.LanguageID=LANG_ENGLISH;
????theApp.SubLangID =SUBLANG_ENGLISH_US;
????bRc=TRUE;
???}

???//check for UK English navigation mode
???if ( !bRc && ::IsEqualGUID(CLSID_SREngineEnumIBMContinuousModeUK,modeGuid) ) {
????theApp.LanguageID=LANG_ENGLISH;
????theApp.SubLangID =SUBLANG_ENGLISH_UK;
????bRc=TRUE;
???}

???//check for German navigation mode
????if ( !bRc && ::IsEqualGUID(CLSID_SREngineEnumIBMContinuousModeGR,modeGuid) ) {
????theApp.LanguageID=LANG_GERMAN;
????theApp.SubLangID =SUBLANG_GERMAN;
????bRc=TRUE;
???}

???//check for French navigation mode
????if ( !bRc && ::IsEqualGUID(CLSID_SREngineEnumIBMContinuousModeFR,modeGuid) ) {
????theApp.LanguageID=LANG_FRENCH;
????theApp.SubLangID =SUBLANG_FRENCH;
????bRc=TRUE;
???}

???//check for Italian navigation mode
????if ( !bRc && ::IsEqualGUID(CLSID_SREngineEnumIBMContinuousModeIT,modeGuid) ) {
????theApp.LanguageID=LANG_ITALIAN;
????theApp.SubLangID =SUBLANG_ITALIAN;
????bRc=TRUE;
???}

???//check for Spanish navigation mode
????if ( !bRc && ::IsEqualGUID(CLSID_SREngineEnumIBMContinuousModeES,modeGuid) ) {
????theApp.LanguageID=LANG_SPANISH;
????theApp.SubLangID =SUBLANG_SPANISH;
????bRc=TRUE;
???}

???//prompt on unknown GUID mode
???if ( !bRc )
????bMBoxRc = AfxMessageBox(IDS_STRING151, MB_OKCANCEL);

???if ( !bRc && bMBoxRc == IDOK ) {
????if ( NOERROR != pIVCmdAttr->SRModeSet(CLSID_SREngineEnumIBMContinuousModeUS) ) {
//????if ( NOERROR != pIVCmdAttr->SRModeSet(CLSID_SREngineEnumIBMContinuousModeGR) ) {
?????AfxMessageBox( IDS_ERROR18 );
?????bRc = FALSE;
????????? }
????else {
?????theApp.LanguageID=LANG_ENGLISH;
?????theApp.SubLangID =SUBLANG_ENGLISH_US;
//?????theApp.LanguageID=LANG_GERMAN;
//?????theApp.SubLangID =SUBLANG_GERMAN;
?????bRc = TRUE;
????}
???}
???else if ( !bRc && bMBoxRc == IDCANCEL ) {
????// Want to use whatever engine is set in site.
????bRc = TRUE;
???}
??}
?}

?if ( pIVCmdAttr )
??pIVCmdAttr->Release();

?return bRc;
}

// Create a voice command menu for this app
// nAppState is the resource ID of a string specifying app state when menu should
//?be active.
// dwFlags specifies how to create the menu
// Shows message box on any error and returns 0
// Returns pointer to menu object on success.
PIVCMDMENU CVCmdMenuDlg::CreateMainMenu( UINT nAppState, DWORD dwFlags )
{
?PIVCMDMENU pIVCmdMenu = 0;
?VCMDNAME VCmdName; // Command Name
?LANGUAGE Language; // language to use
?CString s;
?int iLangStringID;

?//findresourceex
?// Get our app name from our resource file
?s.LoadString( IDS_STRING148 );
?// Truncate our name to field length
?lstrcpy( VCmdName.szApplication,
???(s.Left(VCMD_APPLEN)).GetBuffer(0)
?? );

?// Get our app state from our resource file
?if ( !s.LoadString( nAppState ) )
??AfxMessageBox( IDS_ERROR19 );
?// Truncate our state to field length
?lstrcpy( VCmdName.szState,
???(s.Left(VCMD_STATELEN)).GetBuffer(0)
?? );

?// Specify United States English language model
?Language.LanguageID = theApp.LanguageID;
?
?switch(theApp.LanguageID)
?{
?case LANG_ENGLISH:
??switch(theApp.SubLangID)
??{
??case SUBLANG_ENGLISH_US:
???iLangStringID=IDS_Lang_US;
???break;
??case SUBLANG_ENGLISH_UK:
???iLangStringID=IDS_Lang_UK;
???break;
??}
??break;
?case LANG_GERMAN:
??iLangStringID=IDS_Lang_GR;
??break;
?case LANG_FRENCH:
??iLangStringID=IDS_Lang_FR;
??break;
?case LANG_ITALIAN:
??iLangStringID=IDS_Lang_IT;
??break;
?case LANG_SPANISH:
??iLangStringID=IDS_Lang_ES;
??break;
?default:
??iLangStringID=IDS_Lang_US;
??break;
?}

?s.LoadString( iLangStringID );
?lstrcpy (Language.szDialect,
???(s.Left(LANG_LEN)).GetBuffer(0)
??? );

?if ( NOERROR != gpIVoiceCommand->MenuCreate(&VCmdName,
??????????&Language,
??????????dwFlags,
??????????&pIVCmdMenu
??????????)
??? )
??? AfxMessageBox( IDS_ERROR4 );

?return pIVCmdMenu;
}

// Initialize SAPI voice command interface on default site,
// register a notification sink, and create a temporary voice command menu.
// On success, global pointers
//??gpIVoiceCommand
//??gpVCmdNotifySink
//??gpIVCmdMenu
// are non-zero and ready to be used.
// Error messages displayed as appropriate.
// Application exits if error reading required entries in registry
// If default site is not using IBM engine, user is given a chance to set it,
void CVCmdMenuDlg::OnInitSpeech()
{

?/* ----------------------------------------------------------- */
?/* Check the registry to see if user has installed and enabled */
?/* SAPI voice recognition????????????????????????????????????? */
?/* ----------------------------------------------------------- */
?int nUseSpeech = GetUseSpeech();
?switch( nUseSpeech ) {
?case -1:
??// Cannot find required key/value in registry. Something's wrong
??// with user's install of SAPI etc.
??AfxMessageBox( IDS_STRING147 );
??//OnClose();???//don't do that !!! 11/05/96 pwa
??this->EndDialog(0);??//bye-bye due to errors 11/05/96 pwa
??break;
?case 0:
??// User has installed SAPI speech, but it is not enabled.
??// You should ask the user whether to continue.
??// We're going to go ahead anyway.
??// See SAPI Speech API Developer's Guide, Chapter 8.
?case 1:
??// User has installed and enabled SAPI speech
?default:
??// The key/value exists, but the value is unexpected...
??break;
?}

?/* -------------------------------------------------------- */
?/* Create an instance of the voice command and voice menu?? */
?/* objects.???????????????????????????????????????????????? */
?/* -------------------------------------------------------- */
?gpIVoiceCommand = 0;
?gpVCmdNotifySink = 0;
?gpIVCmdMenu = 0;

?gpIVoiceCommand = CreatePIVCmd();

?if ( gpIVoiceCommand ) {
??? /* -------------------------------------------------- */
??? /* Create the VCmd notification sink interface object */
??? /* ---------------------------------------------------*/
??? gpVCmdNotifySink = new CIVCmdNotifySink( this );
??? if ( 0 == gpVCmdNotifySink )
???? AfxMessageBox( IDS_ERROR2 );
??? else {
???? /* ------------------------------------------------------ */
???? /* Register the notification sink with the voice cmd obj. */
???? /* We are passing VCMDRF_ALLMESSAGES because we want our? */
???? /* app to be notified of all possible notifications.????? */
???? /* ------------------------------------------------------ */
???? // Note: This version of the call uses the default
???? // site with default settings
???? if ( NOERROR != gpIVoiceCommand->Register(
???????? "",?????? // means voice input is from computer
??????gpVCmdNotifySink,// adr of voice-command object
?????????? // notification interface
??????IID_IVCmdNotifySink,// GUID of sink type being passed
??????VCMDRF_ALLMESSAGES,// send us all notification msgs
??????NULL??? // use the voice-site settings from the
????????// registry, or the defaults if there are none
???????? )
???? )
???? AfxMessageBox( IDS_ERROR3 );
??? else {
???? // See if default engine is IBM. Let user select it.
???? if ( !CheckSelectIBMEngine() )
????? return;

???? // init the voice command list
???? InitListBox();
???? // Save current SAPI site enabled state. We'll restore it when we exit.
???? gdwSiteState = GetSiteState();
???? // Now, make sure SAPI site is enabled
???? SetSiteState( TRUE );

???? gpIVCmdMenu = CreateMainMenu( IDS_STRING149, VCMDMC_CREATE_TEMP );
??? }
??? }
?}
}

void CVCmdMenuDlg::OnExitSpeech()
{
??? /* ------------------------------------------ */
??? /* Release the voice command menu interface?? */
??? /* ------------------------------------------ */
??? if (gpIVCmdMenu) {
??????? gpIVCmdMenu->Release();
??????? gpIVCmdMenu = 0;
??? }???

??? /* ------------------------------------------ */
??? /* Restore the voice command enabled state??? */
??? /* before releasing voice command object????? */
??? /* ------------------------------------------ */
?SetSiteState( gdwSiteState );

??? /* ------------------------------------------ */
??? /* Release the voice command object interface */
??? /* ------------------------------------------ */
??? if (gpIVoiceCommand) {
??????? gpIVoiceCommand->Release();
??????? gpIVoiceCommand = 0;
??? }
?
?// Note: gpIVoiceCommand object releases our gpVCmdNotifySink object,
?//?which we "new"ed in OnInitSpeech(). Its release logic deletes it
?//? when the last (ie. one and only) reference is released, so we
?//?do not delete it here.

}

BOOL CVCmdMenuDlg::OnInitDialog()
{
?m_strRecoEcho.LoadString( IDS_INITRECOECHO );

?CDialog::OnInitDialog();

?// Add "About..." menu item to system menu.

?// IDM_ABOUTBOX must be in the system command range.
?ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
?ASSERT(IDM_ABOUTBOX < 0xF000);

?CMenu* pSysMenu = GetSystemMenu(FALSE);
?CString strAboutMenu;
?strAboutMenu.LoadString(IDS_ABOUTBOX);
?if (!strAboutMenu.IsEmpty())
?{
??pSysMenu->AppendMenu(MF_SEPARATOR);
??pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
?}

?// Set the icon for this dialog.? The framework does this automatically
?//? when the application's main window is not a dialog
?SetIcon(m_hIcon, TRUE);???// Set big icon
?SetIcon(m_hIcon, FALSE);??// Set small icon
?
?// TODO: Add extra initialization here

?OnInitSpeech();?// Initialize SAPI voice command speech recognition

?return TRUE;? // return TRUE? unless you set the focus to a control
}

void CVCmdMenuDlg::InitListBox()
{
?/********************************************************/
?/* Initialize the phrase list box.??????*/
?/* This code depends on the phrases being consecutively?*/
?/* numbered string resources between IDS_PhraseBase and?*/
?/* IDS_PhraseLast.??????????*/
?/********************************************************/
?CString s;
?int iPhraseBase, iPhraseLast;
?
?switch(theApp.LanguageID)
?{
?case LANG_ENGLISH:
??switch(theApp.SubLangID)
??{
??case SUBLANG_ENGLISH_US:
???iPhraseBase=IDS_PhraseBase_US;
???iPhraseLast=IDS_PhraseLast_US;
???break;
??case SUBLANG_ENGLISH_UK:
???iPhraseBase=IDS_PhraseBase_UK;
???iPhraseLast=IDS_PhraseLast_UK;
???break;
??}
??break;
?case LANG_GERMAN:
??iPhraseBase=IDS_PhraseBase_GR;
??iPhraseLast=IDS_PhraseLast_GR;
??break;
?case LANG_FRENCH:
??iPhraseBase=IDS_PhraseBase_FR;
??iPhraseLast=IDS_PhraseLast_FR;
??break;
?case LANG_ITALIAN:
??iPhraseBase=IDS_PhraseBase_IT;
??iPhraseLast=IDS_PhraseLast_IT;
??break;
?case LANG_SPANISH:
??iPhraseBase=IDS_PhraseBase_ES;
??iPhraseLast=IDS_PhraseLast_ES;
??break;
?default:
??iPhraseBase=IDS_PhraseBase_US;
??iPhraseLast=IDS_PhraseLast_US;
??break;
?}

?for( int i = iPhraseBase + 1; i < iPhraseLast; i++ ) {
??if ( s.LoadString(i) ) {
???if ( LB_ERR == m_listPhrase.AddString( s.GetBuffer(0) ) ) {
????AfxMessageBox( IDS_ERROR5 );
????break;
???}
??}
?}
?m_listPhrase.SetSel( 0 );??// select the first phrase
?m_buttonDeactivate.EnableWindow( FALSE );
}

void CVCmdMenuDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
?if ((nID & 0xFFF0) == IDM_ABOUTBOX)
?{
??CAboutDlg dlgAbout;
??dlgAbout.DoModal();
?}
?else
?{
??CDialog::OnSysCommand(nID, lParam);
?}
}

// If you add a minimize button to your dialog, you will need the code below
//? to draw the icon.? For MFC applications using the document/view model,
//? this is automatically done for you by the framework.

void CVCmdMenuDlg::OnPaint()
{
?if (IsIconic())
?{
??CPaintDC dc(this); // device context for painting

??SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

??// Center icon in client rectangle
??int cxIcon = GetSystemMetrics(SM_CXICON);
??int cyIcon = GetSystemMetrics(SM_CYICON);
??CRect rect;
??GetClientRect(&rect);
??int x = (rect.Width() - cxIcon + 1) / 2;
??int y = (rect.Height() - cyIcon + 1) / 2;

??// Draw the icon
??dc.DrawIcon(x, y, m_hIcon);
?}
?else
?{
??CDialog::OnPaint();
?}
}

// The system calls this to obtain the cursor to display while the user drags
//? the minimized window.
HCURSOR CVCmdMenuDlg::OnQueryDragIcon()
{
?return (HCURSOR) m_hIcon;
}

void CVCmdMenuDlg::OnActivate()
{
?// TODO: Add your control notification handler code here

?// If no phrases selected, then we can't build a voice command menu
?int nCount = m_listPhrase.GetSelCount();
?if ( 0 >= nCount ) {
??AfxMessageBox( IDS_STRING141 );
??return;
?}

?// If voice command menu setup ok
??? if (?? VoiceCmdMenuEmpty()
??&& VoiceCmdMenuFill()
??&& VoiceCmdMenuActivate()
??? ?) {
??// toggle buttons
??m_buttonActivate.EnableWindow( FALSE );
??m_buttonDeactivate.EnableWindow( TRUE );
??// reinitialize recognized text area
??m_strRecoEcho.LoadString( IDS_INITRECOECHO );
??UpdateData( FALSE );
?}
}

void CVCmdMenuDlg::OnDeactivate()
{
?// TODO: Add your control notification handler code here
?if ( gpIVCmdMenu )
??if ( NOERROR != gpIVCmdMenu->Deactivate() )
???AfxMessageBox( IDS_ERROR20 );

?m_buttonActivate.EnableWindow( TRUE );
?m_buttonDeactivate.EnableWindow( FALSE );?
?
}


BOOL CVCmdMenuDlg::VoiceCmdMenuActivate()
{
?HRESULT hResult;

?// check initialization did not fail
?if ( 0 == gpIVCmdMenu )
??return FALSE;

?// first argument is handle of window to associate with this menu. NULL makes it global to this application
?// second argument is whether menu should be active when voice reco is "awake" (0) or "asleep" (VWGFLAG_ASLEEP)
?hResult = gpIVCmdMenu->Activate( NULL, 0 );
?if ( NOERROR != hResult ) {
??AfxMessageBox( IDS_ERROR6 );
??return FALSE;
?} else return TRUE;

}

BOOL CVCmdMenuDlg::VoiceCmdMenuEmpty()
{
?HRESULT hResult;
?DWORD dwNum;

?// check initialization did not fail
?if ( 0 == gpIVCmdMenu )
??return FALSE;

?// get the number of items in a voice command menu
?hResult = gpIVCmdMenu->Num( &dwNum );
?if ( NOERROR != hResult ) {
??AfxMessageBox( IDS_ERROR7 );
??return FALSE;
?}

?// remove items from first parameter to first plus second parameter from a voice command menu
?// if third parameter is VCMD_BY_IDENTIFIER, then second parameter is identifier of commands to remove
?if ( dwNum ) {
??hResult = gpIVCmdMenu->Remove( 1, dwNum, VCMD_BY_POSITION );
??if ( NOERROR != hResult ) {
???AfxMessageBox( IDS_ERROR8 );
???return FALSE;
??}
?}

?return TRUE;
}

BOOL CVCmdMenuDlg::VoiceCmdMenuFill()
{
?HRESULT hResult;
?SDATA data;
?PVCMDCOMMAND pVCmdCmd;
?DWORD dwNum, dwStart, dwSize, dwCatSize;
?CHAR szCat[] = "Main";
?int *nArraySelect;

?// check initialization did not fail
?if ( 0 == gpIVCmdMenu )
??return FALSE;

?dwNum = m_listPhrase.GetSelCount();
?if ( 0 == dwNum ) {
??AfxMessageBox( IDS_STRING142 );
??return FALSE;
?}
?nArraySelect = (int *)CoTaskMemAlloc( dwNum* sizeof(int) );
?if ( NULL == nArraySelect ) {
??AfxMessageBox( IDS_ERROR9 );
??return FALSE;
?}
?m_listPhrase.GetSelItems( dwNum, nArraySelect );

?// SDATA can refer to an "array" of VCMDCOMMAND structures.
?// We'll build this array be reallocating pVCmdCmd, once
?// each time through our list loop below.
?dwSize = 0;
?pVCmdCmd = (PVCMDCOMMAND)CoTaskMemAlloc( dwSize );
?if ( 0 == pVCmdCmd ) {
??AfxMessageBox( IDS_ERROR10 );
??return FALSE;
?}
?
?// The variable data at the end of VCMDCOMMAND structure must all begin on 32-bit boundaries
?// See SAPI specification for more details
?dwCatSize = 1 + lstrlen( szCat );
?dwCatSize = (dwCatSize+3)&(~3);

?for( int i = 0; i < (int)dwNum; i++ ) {
??PCHAR pNext;
??PVCMDCOMMAND pVCmdNew;
??DWORD dwStrSize, dwAlignSize, dwNewSize;

??// extend existing structure for next VCMDCOMMAND structure
??dwStrSize?? = 1 + m_listPhrase.GetTextLen( nArraySelect[i] );
??dwAlignSize = (dwStrSize+3)&(~3);
??dwNewSize = dwSize + sizeof(VCMDCOMMAND) + 2*dwAlignSize + dwCatSize + sizeof(DWORD);
??pVCmdCmd = (PVCMDCOMMAND)CoTaskMemRealloc( pVCmdCmd, dwNewSize );
??if ( 0 == pVCmdCmd ) {
???AfxMessageBox( IDS_ERROR11 );
???return FALSE;
??}
??// fill in the new VCMDCOMMAND structure
??pNext??? = (PCHAR)pVCmdCmd + dwSize;
??memset( pNext, 0, dwNewSize - dwSize );
??pVCmdNew = (PVCMDCOMMAND)pNext;
??pVCmdNew->dwSize?????? = dwNewSize - dwSize;?// sizeof this structure
??pVCmdNew->dwFlags????? = 0;??????// these flags can specify confirmaton, disabled. See SAPI spec.
??pVCmdNew->dwCommandText= NULL;?????// use dwCommand to show voice command menu to user
??pVCmdNew->dwActionSize = sizeof(DWORD);???// size of action data
??// fill in the variable data at end of new structure
??pNext?? += sizeof(VCMDCOMMAND);?????// variable data starts at abdata[]
??pVCmdNew->dwAction???? = (DWORD)(pNext - (PCHAR)pVCmdNew);?// offset to app-unique action code
??*(DWORD *)(pNext) = (DWORD)i;????????// make up an action code for this command
??pNext += sizeof(DWORD);
??pVCmdNew->dwCommand??? = (DWORD)(pNext - (PCHAR)pVCmdNew);?// offset to command string
??if ( (int)dwStrSize != 1 + m_listPhrase.GetText(nArraySelect[i], (LPTSTR)pNext) ) {
???AfxMessageBox( IDS_ERROR12 );
???return FALSE;
??}
??pNext += dwAlignSize;
??pVCmdNew->dwDescription = (DWORD)(pNext - (PCHAR)pVCmdNew);?// offset to command description
??if ( (int)dwStrSize != 1 + m_listPhrase.GetText(nArraySelect[i], (LPTSTR)pNext) ) {
???AfxMessageBox( IDS_ERROR12 );
???return FALSE;
??}
??pNext += dwAlignSize;
??pVCmdNew->dwCategory = (DWORD)(pNext - (PCHAR)pVCmdNew);?// offset to command category
??strcpy( pNext, szCat );
??dwSize = dwNewSize;
?}

?data.pData? = pVCmdCmd;
??? data.dwSize = dwSize;

?hResult = gpIVCmdMenu->Add( dwNum, data, &dwStart );
?if ( NOERROR != hResult ) {
??AfxMessageBox( IDS_ERROR13 );
??return FALSE;
?}

?CoTaskMemFree( nArraySelect );
?CoTaskMemFree( data.pData );
?return TRUE;
}

void CVCmdMenuDlg::CommandRecognized( PSTR pszText )
{
?m_strRecoEcho = pszText;
?UpdateData( FALSE );?// send fields to dialog window
}

void CVCmdMenuDlg::CommandOther( PSTR pszText )
{
?if ( NULL == pszText )
??m_strRecoEcho.LoadString( IDS_NOTRECOED );
?else {
??m_strRecoEcho.LoadString( IDS_CMDOTHER );
??m_strRecoEcho += pszText;
?}
?UpdateData( FALSE );
}
void CVCmdMenuDlg::TooNoisy()
{
?m_strRecoEcho.LoadString( IDS_TOONOISY );
?UpdateData( FALSE );?// send fields to dialog window
}

void CVCmdMenuDlg::NoSignal()
{
?m_strRecoEcho.LoadString( IDS_NOSIGNAL );
?UpdateData( FALSE );?// send fields to dialog window
}

void CVCmdMenuDlg::TooLoud()
{
?m_strRecoEcho.LoadString( IDS_TOOLOUD );
?UpdateData( FALSE );?// send fields to dialog window
}

void CVCmdMenuDlg::TooQuiet()
{
?m_strRecoEcho.LoadString( IDS_TOOQUIET );
?UpdateData( FALSE );?// send fields to dialog window
}

// Read enabled state of voice command site
// Show message box on error.
DWORD CVCmdMenuDlg::GetSiteState()
{
?PIVCMDATTRIBUTES pIVCmdAttr = 0;
?DWORD dwEnabled = 0;
?
?if ( gpIVoiceCommand ) {
??if ( NOERROR != gpIVoiceCommand->QueryInterface(IID_IVCmdAttributes, (LPVOID FAR *)&pIVCmdAttr) )
???AfxMessageBox( IDS_ERROR16 );
??else {
???if ( NOERROR != pIVCmdAttr->EnabledGet(&dwEnabled) )
????AfxMessageBox( IDS_ERROR21 );
??}
?}

?if ( pIVCmdAttr )
??pIVCmdAttr->Release();

?return dwEnabled;
}

// Set enabled state of voice command site
// Show message box on error.
void CVCmdMenuDlg::SetSiteState( DWORD dwEnabled )
{
?PIVCMDATTRIBUTES pIVCmdAttr = 0;
?
?if ( gpIVoiceCommand ) {
??if ( NOERROR != gpIVoiceCommand->QueryInterface(IID_IVCmdAttributes, (LPVOID FAR *)&pIVCmdAttr) )
???AfxMessageBox( IDS_ERROR16 );
??else {
???if ( NOERROR != pIVCmdAttr->EnabledSet(dwEnabled) )
????AfxMessageBox( IDS_ERROR22 );
??}
?}

?if ( pIVCmdAttr )
??pIVCmdAttr->Release();
}

void CVCmdMenuDlg::OnOK()
{
?// TODO: Add extra validation here

?// Restore site state and shut down voice reco objects...
?OnExitSpeech();

?CDialog::OnOK();
}

void CVCmdMenuDlg::OnClose()
{
?// TODO: Add your message handler code here and/or call default
?
?// Restore site state and shut down voice reco objects...
?OnExitSpeech();

?CDialog::OnClose();
}

void CVCmdMenuDlg::WinHelp(DWORD dwData, UINT nCmd)
{
?// TODO: Add your specialized code here and/or call the base class
?return;
}

需要源碼的留下郵件,我來(lái)發(fā),

???????????

給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow

總結(jié)

以上是生活随笔為你收集整理的IBM Voice CMDMenu语音命令控制技术 适用于Emmbbed IBM Viavoice的语音菜单,语音拨号的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

精品国产大片 | 日韩精品一区二区三区在线视频 | 99久久久久国产精品免费 | 日日干天天操 | 亚洲精品视频在线观看免费 | 超级碰99 | 久久久午夜精品理论片中文字幕 | 最近中文字幕免费观看 | 亚洲精品美女在线 | 午夜久久影视 | 久久精品成人欧美大片古装 | 亚洲免费在线播放视频 | 亚洲激情在线 | 天天天天色射综合 | 欧美另类69 | 免费人成网ww44kk44 | 青青草国产在线 | 欧洲精品视频一区二区 | 色综合久久久久综合体桃花网 | 日韩欧美在线高清 | 日韩精品aaa | 精品国产一区二区三区男人吃奶 | 成人黄色毛片 | 97超碰超碰久久福利超碰 | 亚洲伊人成综合网 | 日日干 天天干 | 国产美女免费观看 | 狠狠亚洲| 欧美日韩精品影院 | 99在线观看| 91免费版成人 | 天天干天天干天天干天天干天天干天天干 | 久久久久国产一区二区三区 | 久久久久久久久久久电影 | 在线免费观看国产视频 | 日韩av一区在线观看 | 在线观看黄网站 | 国产精品人人做人人爽人人添 | 天天摸日日操 | 国产亚洲精品久久久久久移动网络 | 日韩高清在线观看 | 婷婷在线视频观看 | 99国产在线观看 | 国产一区二区久久久 | 日韩欧美观看 | 精品久久久久国产免费第一页 | 日韩三级在线 | 911国产| 成年人黄色大片在线 | 国产精品99久久久久的智能播放 | 一区二区精品在线 | 九九99| 国产999精品视频 | 91精品欧美 | 国产精品自产拍在线观看中文 | 精品国产一二区 | 久久国产一二区 | 亚洲精品网址在线观看 | 国产成人精品电影久久久 | 丁香色婷 | 中文字幕免费在线 | 国产精品一区二区在线播放 | 欧美日韩在线视频一区二区 | 狠狠色丁香婷婷综合 | 91av99| 免费视频久久久久久久 | 亚洲精品国产拍在线 | 久久一区二区免费视频 | 97视频在线观看视频免费视频 | 最新av网址在线 | 国产一级免费在线观看 | 成人精品久久久 | 免费久久久久久久 | 中文字幕免费播放 | 国产一级性生活 | 亚洲精品视频在 | 国产亚洲精品久久久久久移动网络 | 激情在线网| 波多野结衣理论片 | 麻豆精品在线视频 | 女人18片毛片90分钟 | 大型av综合网站 | 人人狠狠 | 亚洲爱爱视频 | 激情网五月婷婷 | 中文字幕色婷婷在线视频 | 99精品视频在线免费观看 | 国产在线视频一区 | 精品国产诱惑 | 成人小电影在线看 | 日韩av免费在线电影 | 国产精品毛片一区二区 | 99一级片| av电影在线不卡 | 奇米影视8888 | 日本精品视频在线观看 | 亚洲精品乱码久久久久久蜜桃动漫 | 久久污视频| 中文有码在线视频 | 欧美精品免费一区二区 | 天天天干天天射天天天操 | 久久精品视频国产 | 99在线高清视频在线播放 | 免费看高清毛片 | 日韩av网站在线播放 | 欧美福利精品 | 成人av在线网址 | 日韩精品一区二区三区水蜜桃 | 一级做a视频| 一区二区三区四区免费视频 | 亚洲黄色一级视频 | 91九色在线视频 | 91影视成人 | 91大神免费视频 | 91九色蝌蚪在线 | 999精品网| 亚洲精品视频在线 | 久久久免费高清视频 | 2020天天干天天操 | 欧美一级电影免费观看 | www.色婷婷.com | 最新久久久 | 日本中文字幕高清 | 天堂av网址 | 狠狠色丁香婷婷综合久久片 | 中文字幕在线观看第一区 | 四季av综合网站 | 亚洲一区二区天堂 | 中文字幕在线播放第一页 | 久久女教师 | 片网站| 欧美日韩不卡一区 | 国产96精品| 久久久久久久久久久影院 | 国产一区二区在线免费 | 久久精品国产一区二区三区 | 欧美xxxxx在线视频 | 久久综合在线 | 超碰av在线播放 | 97人人爽| 色爱区综合激月婷婷 | 99色免费| 欧美日韩在线观看一区二区 | 成 人 黄 色 视频 免费观看 | 成人a级免费视频 | 亚洲天堂香蕉 | 久久久久久亚洲精品 | 美女免费视频网站 | 日韩中文久久 | 四虎免费av | 国产流白浆高潮在线观看 | 久久久国产电影 | 97国产大学生情侣酒店的特点 | 国产精品久久久精品 | 韩国一区二区在线观看 | 国产精品久久久久久久久久久久午夜 | 日韩一区正在播放 | 黄色免费电影网站 | 激情久久网 | 日韩精品在线观看视频 | 免费av大片 | 米奇影视7777 | 亚洲久草网 | 久久精品理论 | 久久久久久久久久电影 | 91精品办公室少妇高潮对白 | 波多野结衣视频在线 | 日韩免费中文 | 国产在线视频一区二区 | 国产一级视频在线免费观看 | 一区二区三区在线免费 | 狠狠狠狠狠狠狠狠 | 天天摸天天舔 | 国产自偷自拍 | 国产日韩欧美视频 | 成人va天堂 | 91精品久久久久久粉嫩 | 久久爱992xxoo | 99久免费精品视频在线观看 | 国产91精品在线观看 | 免费av免费观看 | 欧美热久久 | 日韩视频区 | 天天操天天综合网 | 99久久99视频只有精品 | 国产精品国产三级国产专区53 | 国产精品porn | 永久免费的av电影 | 91av免费观看 | 国产日韩精品在线观看 | 波多野结依在线观看 | 午夜精品久久久久久99热明星 | 国产精品中文在线 | 国产96精品 | 亚洲mv大片欧洲mv大片免费 | 中文字幕在线观看完整 | 中文字幕欧美日韩va免费视频 | 日本精品一区二区在线观看 | 在线观看av网 | 亚洲欧美日韩中文在线 | 91成品视频| 国产精品久久人 | 在线观看视频国产 | 日日干视频| 91亚洲精品久久久久图片蜜桃 | 久久激情综合网 | 中文资源在线观看 | av在线电影网站 | 五月婷社区 | 麻豆av一区二区三区在线观看 | 久久久午夜影院 | 深爱综合网 | 中文字幕资源在线 | 麻豆免费在线播放 | 久久国产精品久久精品国产演员表 | 97色在线视频| 激情深爱五月 | 久久成年人网站 | 高清久久久久久 | www.色就是色 | 日日干激情五月 | 日韩av电影免费在线观看 | 久久伦理影院 | 视频 天天草 | 亚洲视频1区2区 | 在线观看亚洲国产 | 成人午夜影院 | 日韩sese | 亚洲影院天堂 | 亚洲欧洲日韩在线观看 | 九九久久久久久久久激情 | 国产精品中文字幕在线观看 | 五月天激情视频在线观看 | 97精品国产97久久久久久 | 久久精品视频观看 | 久久男人中文字幕资源站 | 天天操天天爱天天干 | 亚洲无吗视频在线 | 日韩精品免费在线 | 97成人精品视频在线观看 | 五月天天色 | 欧美亚洲精品在线观看 | 911国产在线观看 | 国产手机在线观看视频 | 久久综合九色综合欧美就去吻 | 九九涩涩av台湾日本热热 | 夜色资源站国产www在线视频 | 国产精品av在线免费观看 | 五月婷婷影院 | 天天色天天操综合 | 91福利国产在线观看 | 免费黄在线观看 | 久久久18| 中文字幕亚洲综合久久五月天色无吗'' | 亚洲国产精品成人av | 国产资源在线免费观看 | 色婷婷av国产精品 | 国产明星视频三级a三级点| 国产精品97| 黄色小说视频在线 | 国产精品福利小视频 | 欧美最新另类人妖 | 亚洲精品视频一二三 | 国产精品 中文在线 | 五月天色中色 | 中文在线字幕免费观 | 欧美日韩在线观看一区二区 | 天天操人| 在线观看aa| 精品一区二区三区香蕉蜜桃 | 在线中文字幕视频 | 婷婷激情在线观看 | 久久伊人操 | 91禁在线看 | 久久免费黄色大片 | 综合中文字幕 | av在线收看| 色午夜 | 久久人人97超碰国产公开结果 | 狠狠躁日日躁狂躁夜夜躁 | 久久黄色美女 | 国产精品国产亚洲精品看不卡15 | 日韩专区在线观看 | 91av国产视频| 亚洲一级黄色av | www.亚洲在线 | 99精品久久只有精品 | 久久综合中文字幕 | 欧美成亚洲 | 肉色欧美久久久久久久免费看 | 中文字幕在线观看不卡 | 91看片成人 | 激情九九| 中文字幕一二三区 | 字幕网资源站中文字幕 | 精品国偷自产在线 | 日韩理论在线观看 | 免费在线观看不卡av | 在线免费观看一区二区三区 | 色综合久久中文综合久久牛 | 亚洲成人av片 | 亚洲 成人 欧美 | 久久在线影院 | 亚洲视频大全 | 免费精品在线观看 | 99在线看| 激情五月婷婷激情 | 麻豆久久精品 | 96精品视频 | 免费高清在线观看成人 | 在线视频日韩欧美 | 日本精品在线看 | 欧美日韩电影在线播放 | 狠狠成人 | 久久特级毛片 | 精品影院一区二区久久久 | 国内精品中文字幕 | 亚洲欧美精品一区 | 日本性生活免费看 | 亚洲午夜精品福利 | 国产91精品欧美 | 国产精品久久久久影院 | 亚洲四虎| 午夜影院一级 | 超碰97免费观看 | 久久九九影院 | 夜夜躁狠狠躁 | 天天色天天爱天天射综合 | 超碰在线中文字幕 | 国产免费人人看 | 在线观看日韩中文字幕 | 天天色天天射天天干 | 国产精品国产三级国产aⅴ无密码 | 最近日本中文字幕a | 天干啦夜天干天干在线线 | 探花国产在线 | 色诱亚洲精品久久久久久 | 黄色a三级 | 999久久国精品免费观看网站 | 操操操影院| 福利视频精品 | av高清影院 | 久久99热精品这里久久精品 | 精品欧美乱码久久久久久 | 欧美a级一区二区 | 在线观看香蕉视频 | 国产在线不卡精品 | 中文字幕久久精品一区 | 婷婷看片| 伊人成人久久 | 成人av高清| 日本爱爱免费视频 | 国内小视频在线观看 | 亚洲japanese制服美女 | 青青河边草免费观看 | 亚洲国产免费 | 久久久午夜精品理论片中文字幕 | 欧美激情第一区 | 国产高清视频免费最新在线 | 中文字幕一区二 | www操操| www.99久久.com | 草久在线 | 日韩丝袜视频 | 1000部国产精品成人观看 | 久久综合九色综合欧美狠狠 | 成人精品久久久 | 98涩涩国产露脸精品国产网 | 欧美日韩国产精品一区二区亚洲 | 国产成人亚洲在线观看 | 亚洲四虎| 国产综合91| 亚洲国产美女久久久久 | 人人爱人人舔 | 免费在线观看一区二区三区 | 在线观看视频国产一区 | 国产精品久久久久一区二区三区共 | 激情五月av | 人人澡超碰碰 | 久久视频在线看 | 欧美最猛性xxxxx(亚洲精品) | 一区二区三区四区五区在线 | 午夜精品久久久久久久久久 | 激情五月色播五月 | 免费裸体视频网 | 天天激情| a天堂在线看| 亚洲干 | 日韩在线不卡视频 | 免费裸体视频网 | 亚洲专区视频在线观看 | 国模精品一区二区三区 | 99精品免费在线观看 | 天天干天天做天天爱 | 国产毛片久久久 | 久久久精品免费观看 | 国产精品手机看片 | 日产乱码一二三区别免费 | 天天舔天天搞 | 日日日日日| 亚洲精品国偷拍自产在线观看 | 夜夜操网 | 超碰九九| 欧美精品免费在线观看 | 手机色在线 | 国产在线一卡 | 国产精品免费在线播放 | 国产精品白丝jk白祙 | 在线观看av小说 | av黄色av| 日韩草比| 韩国av三级 | 欧美午夜精品久久久久 | 天天射天天射天天射 | 久久久久久综合 | 日韩精品视频在线观看网址 | 国产三级久久久 | 国产精品视频app | 在线观看色网站 | 精品国产免费一区二区三区五区 | 日韩69av | 久久精品电影院 | 国产黄a三级三级三级三级三级 | 国产麻豆精品免费视频 | 国产福利精品一区二区 | www婷婷| 婷婷丁香狠狠爱 | www色网站 | 中文字幕精品在线 | 激情五月激情综合网 | 国产精品第54页 | 九九九热精品免费视频观看网站 | 欧美日韩免费在线视频 | 不卡精品视频 | 久久亚洲二区 | 最近更新中文字幕 | 久久久久久久免费观看 | 国产精品二区三区 | 91av欧美| 国产日韩欧美视频在线观看 | 在线观看免费av网站 | 91av视频在线观看免费 | 成人影视片 | 91网在线观看 | 国产亚洲精品久久19p | 婷婷色av| 91中文字幕一区 | 精品视频www | 在线观看色视频 | 国产亚洲精品中文字幕 | 狠狠色丁香婷综合久久 | 一二三区高清 | 99久久99视频 | 91在线看黄 | 国产一区在线观看视频 | 欧美性黑人| 射射射av | 欧美日韩精品在线一区二区 | 国产欧美高清 | 一区二区三区韩国免费中文网站 | 天天操天天操天天操天天 | 中文字幕丝袜制服 | 亚洲国产免费看 | 在线激情影院一区 | 久久在线免费视频 | 天天操天天干天天玩 | 久操视频在线免费看 | 91资源在线视频 | 午夜黄色大片 | 国产美女视频免费 | 国产黄免费在线观看 | 国产精品成人一区二区三区吃奶 | 字幕网资源站中文字幕 | 国产精品视频资源 | 99久久精品国产观看 | 久久99久久99 | 婷婷色九月 | 亚洲第一中文字幕 | 亚洲国产精品成人va在线观看 | 天天se天天cao天天干 | 国产一区二区不卡视频 | 五月婷婷综合激情 | 视频成人免费 | 国产一级片直播 | 天天操夜夜想 | 97国产大学生情侣白嫩酒店 | 成人午夜电影在线播放 | 亚洲婷婷综合色高清在线 | 中文字幕最新精品 | 在线激情av电影 | 亚洲成aⅴ人片久久青草影院 | 久久国产精品99久久久久久老狼 | 中文字幕无吗 | 中文字幕黄色 | 国产色在线 | 国产精品成人免费一区久久羞羞 | 日韩videos高潮hd | 亚洲美女免费精品视频在线观看 | 日韩簧片在线观看 | 欧美精品一区在线 | 国产视频不卡一区 | 日韩xxxbbb | 色综合久久精品 | 国产精品6999成人免费视频 | 在线播放 日韩专区 | 欧美日韩精品在线视频 | 久久人操 | 黄色av网站在线观看 | 国产不卡一二三区 | 91网站观看| 亚洲国产伊人 | 丁香婷婷综合网 | 国产一级淫片在线观看 | 福利视频一二区 | 国产精品手机在线播放 | 日韩在线视频网 | 天天看天天干天天操 | 操操操夜夜操 | 亚洲婷婷在线 | 久久综合导航 | 色婷婷综合久久久中文字幕 | 精品高清视频 | 欧美日韩国产精品爽爽 | 国产一级二级三级在线观看 | 成人在线播放视频 | 欧美日韩视频在线播放 | 精品视频国产一区 | 黄色网www | 天天草综合 | 久久国产精品久久久 | 在线观看亚洲精品 | 91在线播 | 免费69视频 | 九精品| 日韩网站在线播放 | 最近最新mv字幕免费观看 | 欧美福利片在线观看 | 久久狠狠一本精品综合网 | 五月黄色| 国产日韩视频在线播放 | 91精品国产91p65 | www久久com| 国产96av | 天天色天天草天天射 | 五月婷婷操 | 国产中文字幕视频 | 国产一区二区三区四区在线 | 精品国产一二三四区 | 久久久久综合网 | 亚洲丝袜一区 | 国产精品专区h在线观看 | 麻花天美星空视频 | 麻豆传媒视频在线免费观看 | 亚洲精品无| 亚洲精品国产精品国自产 | 人人射人人射 | 欧美最猛性xxxx | 国产精品免费久久久久久 | 亚洲欧美一区二区三区孕妇写真 | 中文字幕一区二区在线播放 | 国产一区二区视频在线播放 | 91久久奴性调教 | 亚州欧美视频 | 日本久久久精品视频 | 免费日韩视 | 精品视频资源站 | 免费看的av片 | www.亚洲视频.com | 天天想夜夜操 | 九九九热精品免费视频观看 | 日b视频国产 | 欧美成人a在线 | 国产精品毛片久久久久久久久久99999999 | 久久久久国产精品免费网站 | 涩涩网站在线观看 | 最新国产精品拍自在线播放 | 国产精品自在线拍国产 | 亚洲综合成人av | 久久精品国产一区二区电影 | 成人免费观看完整版电影 | 久99久在线视频 | 亚洲欧美成人综合 | 日躁夜躁狠狠躁2001 | 国产美女免费视频 | 久久久久国产精品厨房 | 国产明星视频三级a三级点| 久久久精品一区二区 | 高清av免费观看 | 免费在线黄色av | 91看片淫黄大片一级在线观看 | 精品一区二区在线免费观看 | 欧美精品你懂的 | 久久99热精品这里久久精品 | 日韩一区二区三区免费电影 | 国产精品久久久久久久av大片 | 亚洲情感电影大片 | 日韩视频在线观看视频 | 免费亚洲视频在线观看 | 久久精品4 | 日黄网站 | 精品亚洲午夜久久久久91 | 亚洲国产精品久久久久 | 福利片视频区 | 黄污网 | 亚洲欧洲视频 | 免费一级特黄毛大片 | 久久久免费观看 | 国产午夜三级一区二区三 | 成年人免费在线播放 | 99精品免费在线 | 欧美日韩p片 | 天天做日日爱夜夜爽 | 中文国产在线观看 | a v在线观看| 国产美女视频网站 | 久久污视频| 青青五月天 | 国产一区二三区好的 | 四虎成人精品永久免费av九九 | www天天操 | 97超碰人人澡人人爱学生 | 天天操天天射天天插 | 久久中文精品视频 | 日韩综合视频在线观看 | 久久久久色 | 激情五月婷婷综合 | 欧美激情视频一区二区三区 | 丁香色婷 | 亚洲另类人人澡 | 日日躁你夜夜躁你av蜜 | a√天堂中文在线 | 人人人爽| 91女神的呻吟细腰翘臀美女 | 人人插人人搞 | 最近中文字幕在线 | 日韩精品一区二区三区第95 | 国产精品一区二区在线 | 九九精品久久久 | 日日夜夜干 | 久久黄色网址 | 欧美一级激情 | 国产精品专区h在线观看 | 美女视频黄免费的久久 | 最新精品视频在线 | 成人久久网| 又污又黄网站 | 国产成人av一区二区三区在线观看 | 在线观看av免费 | 欧美一区免费在线观看 | 97视频在线播放 | 国产又粗又硬又爽视频 | 夜夜躁日日躁 | 天天插日日操 | 国产美女永久免费 | 久久第四色 | 国产一区免费在线 | 免费欧美 | 国产毛片aaa | 人人射人人射 | 蜜臀av网站 | 91精品在线免费视频 | 国产在线 一区二区三区 | 九七在线视频 | 日韩电影在线观看一区 | ,久久福利影视 | 国产日产精品久久久久快鸭 | www.狠狠操.com| av在线等 | 精品在线观看国产 | 亚洲国产精品成人女人久久 | 欧美日韩国产综合网 | 天天干天天干天天干天天干天天干天天干 | 五月激情丁香 | 97福利在线观看 | 天天天干天天天操 | 国产精品久久久免费 | 四虎天堂| japanese黑人亚洲人4k | 91免费观看视频网站 | 婷婷色亚洲 | 成人免费在线播放视频 | 亚州欧美视频 | 麻豆91小视频| 国产99在线 | av韩国在线 | 国产精品成人自拍 | 日本aaa在线观看 | 91免费观看国产 | 国产精品专区在线 | 丝袜美腿亚洲 | 嫩嫩影院理论片 | 日本少妇视频 | 中文字幕在线观看网址 | 成年人黄色av | 久久人人爽人人 | 一区二区三区在线免费观看视频 | 91片黄在线观 | 亚洲欧美少妇 | 精品日韩在线 | 成人av在线资源 | 国产精品毛片久久久 | 在线 视频 亚洲 | 亚洲精品18p | 天天爱天天草 | 国产福利av在线 | 天天插天天干 | 97超碰免费在线 | www狠狠| 亚洲综合在线视频 | 欧美天天干| 中文字幕在线看 | 久久视频这里只有精品 | 黄色资源网站 | 欧美日本啪啪无遮挡网站 | 国产91综合一区在线观看 | 国产成人久久久77777 | 欧美日韩观看 | 免费日韩高清 | 激情视频综合网 | 日韩欧美电影在线 | 永久免费的啪啪网站免费观看浪潮 | 日韩专区中文字幕 | 欧美一级片在线 | 久久国产精品偷 | 91插插视频 | 三级黄免费看 | 日本字幕网 | 在线视频福利 | 最近日本字幕mv免费观看在线 | 97精品国产91久久久久久 | 中文字幕成人av | 国产黄色视 | 国产99精品| 91在线国内视频 | 日本性xxx| 久草精品电影 | 国产精品一区二区视频 | 天天激情在线 | 成人av免费网站 | 国产+日韩欧美 | av黄色在线播放 | 中文字幕在线影院 | 欧美精品乱码久久久久久 | 3d黄动漫免费看 | 国产精品18久久久久vr手机版特色 | 在线国产一区二区 | 久久精品99国产精品酒店日本 | 国产黄色在线网站 | 91精品在线观看视频 | 日韩二级毛片 | 天天干一干 | 天堂网一区二区 | 五月婷婷电影网 | 国产精品永久免费视频 | 99精品一级欧美片免费播放 | 精品1区二区 | 国产理论一区二区三区 | 在线99热 | 欧美日韩精品综合 | av高清免费在线 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 欧美精品三级 | 91探花系列在线播放 | 99免费在线视频 | 国产精品成人免费精品自在线观看 | 久久电影日韩 | 色片网站在线观看 | 亚洲电影久久久 | 亚洲精品中文字幕在线 | 国产人成一区二区三区影院 | www黄色大片| 日韩 在线 | 国产在线精品播放 | www.黄色 | 首页av在线| 精品国产乱码久久久久久浪潮 | 天天弄天天干 | 夜夜躁天天躁很躁波 | 欧美一级片播放 | 精品中文字幕在线播放 | 中文字幕在线看 | 国产999视频 | 国产在线日韩 | 亚洲综合一区二区精品导航 | 欧美福利网站 | 国产男女无遮挡猛进猛出在线观看 | 99久久精品国产一区 | 91丨精品丨蝌蚪丨白丝jk | 日韩久久视频 | 成人黄色大片在线观看 | 激情电影在线观看 | 中文字幕人成不卡一区 | 日本三级人妇 | 手机av在线网站 | 午夜精品一区二区三区在线观看 | 超碰在线97免费 | 成人国产一区二区 | 国产精品美女久久久久aⅴ 干干夜夜 | 人人操日日干 | 亚洲一区欧美激情 | 日韩av不卡在线观看 | 91久久久久久国产精品 | 看片一区二区三区 | 高清av网站| 天天操天天干天天操天天干 | 欧美性生交大片免网 | 国产在线视频一区二区三区 | 国产不卡av在线播放 | 久久国产高清 | 亚洲成人精品 | 国产裸体视频网站 | 免费看黄在线网站 | 99这里只有久久精品视频 | 激情五月伊人 | 久久精品96| 国产精品久久网 | 久久国产精品免费一区二区三区 | 美腿丝袜一区二区三区 | 人人爽人人爽人人爽人人爽 | 国产精品一码二码三码在线 | 天天激情天天干 | 亚洲免费激情 | 婷婷激情5月天 | 免费网站观看www在线观看 | 国产一区私人高清影院 | 亚洲精品综合欧美二区变态 | 在线视频18在线视频4k | 欧美日韩国产在线精品 | 伊人丁香 | 国产精品美女久久 | 国产韩国日本高清视频 | 99久久999久久久精玫瑰 | 成人在线视频网 | 午夜美女av| 狠狠操狠狠干天天操 | 国产精品久久久久久久久久久久 | 欧美日韩视频一区二区三区 | 摸bbb搡bbb搡bbbb| 精品国内 | 国产乱对白刺激视频在线观看女王 | 97超碰人人模人人人爽人人爱 | 国产福利一区二区三区在线观看 | 97在线看| 日韩精品免费在线观看 | 成人一区二区三区在线观看 | 久久免费黄色 | 99久国产| 精品美女久久久久 | 国产成人精品三级 | 国产黄影院色大全免费 | 中文字幕在线播放视频 | 国产最顶级的黄色片在线免费观看 | 国产精品久久久影视 | 99精品欧美一区二区三区黑人哦 | 日韩欧美国产视频 | 欧美在线你懂的 | 日日夜夜天天射 | 手机看片 | 字幕网资源站中文字幕 | 超级碰99 | 国产一区成人在线 | 成人免费xxx在线观看 | 狠狠色网 | 亚洲欧洲日韩 | 日韩欧美精品一区二区 | 午夜精品一区二区三区免费 | 69国产精品视频 | 欧美视频不卡 | 808电影| 在线观看aa | 久久久www成人免费毛片麻豆 | 久久国产精品免费观看 | 伊人天堂网 | 天天插天天干天天操 | 涩涩爱夜夜爱 | 狠色在线 | 国产在线一区二区 | 亚洲成人黄色av | 久久少妇av| 视频二区 | 日本不卡视频 | 欧美日韩国产二区 | 久二影院| 玖玖在线观看视频 | 日韩欧美在线视频一区二区 | 中文字幕在线观看第一页 | 免费黄在线看 | 国产在线视频导航 | 国产不卡网站 | 很黄很黄的网站免费的 | 国产精品69av | 久久99精品视频 | 午夜精品999| 一区二区精品久久 | 中文字幕网址 | 好看av在线 | 国产91免费在线 | 在线观看va | 国产一卡二卡四卡国 | 爱情影院aqdy鲁丝片二区 | 亚洲一级久久 | 天天射综合 | 亚洲综合射| 九色91福利 | 久久午夜剧场 | 亚洲综合激情五月 | 日韩理论视频 | 天天操网址 | 婷婷天天色| 色多多在线观看 | 免费高清无人区完整版 | av黄色免费看 | 黄色免费在线视频 | 成人国产亚洲 | 久草久草久草久草 | 亚洲欧美精品一区 | 国产资源精品在线观看 | 成人av电影免费观看 | 超碰最新网址 | 色综合天天在线 | 国产一区二区三区免费在线观看 | 国产精品美女久久久久久久久 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 91精品视频在线免费观看 | 日韩在线第一区 | 天天在线免费视频 | 亚洲国产成人在线播放 | 中文字幕免费成人 | 亚洲欧美成人在线 | 激情综合电影网 | 人人爽人人爽人人片av | 国产一级片免费视频 | 奇米网网址 | 久久国产高清视频 | 中文字幕一区av | 久久精品99久久久久久2456 | 久久免费精品视频 | 婷婷丁香色综合狠狠色 | 最新日韩视频在线观看 | 国产精品va最新国产精品视频 | 黄网站a | av福利在线免费观看 | 三级视频国产 | 三级黄色在线 | 美国三级黄色大片 | 亚洲视频 视频在线 | 国产免费精彩视频 | 中文字幕区 | 日韩欧美久久 | 午夜精品久久一牛影视 | 人人躁| 国产高清视频在线 | 天天干天天拍天天操天天拍 | 国产午夜三级一区二区三桃花影视 | 又黄又爽又刺激 | 日本韩国在线不卡 | 国产精品视频区 | 精品一二三四视频 | 九九热在线视频免费观看 | 国产一区二区精 | 久久综合色8888| 国产精品一区二区精品视频免费看 | 日本一区二区高清不卡 | 久久免费视频国产 | 亚洲动漫在线观看 | 亚洲精品国产麻豆 | 国产精品免费视频一区二区 | 久久久久久久久网站 | 亚洲视频专区在线 | 香蕉影院在线观看 | 国产美女精品 | 91免费版在线 | av中文字幕av | 亚洲永久精品国产 | 欧美大片大全 | 男女日麻批| 国产手机视频精品 | 九九av | 国产精品高潮在线观看 | 日本黄色大片免费看 | 亚洲欧美成人综合 | 日韩视频免费观看高清完整版在线 | 久久综合视频网 | 日本三级久久 | 99色视频在线 | 久久精品国产一区二区三区 | 成 人 黄 色视频免费播放 | 国产精品高 | 少妇bbb搡bbbb搡bbbb′ | 久久在线精品视频 | 国产精品密入口果冻 | 91在线九色| 色综合久久久网 | 色婷婷狠狠五月综合天色拍 | 日韩中字在线 | 国产成人精品免高潮在线观看 | av色综合网| 超碰97在线人人 |