Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Speech API 
:(
    Опции темы
lamer
Дата 28.2.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.6.2006

Репутация: нет
Всего: нет



Код

// 555555555Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "555555555.h"
#include "555555555Dlg.h"
#include <initguid.h>
#include <spchwrap.h>


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



// Óêàçàòåëü íà èíòåðôåéñ, êîòîðûé áóäåò èñïîëüçîâàí äëÿ ïîèñêà óñòàíîâëåííûõ êîìïîíåò
PITTSENUM        m_pITTSEnum;
// Óêàçàòåëü íà èíòåðôåéñ, êîòîðûé áóäåò îçâó÷èâàòü òåêñò
PITTSCENTRAL    m_pITTSCentral;
// Óêàçàòåëü íà èíòåðôåéñ, óïðàâëÿþùèé íàñòðîéêàìè ðå÷åâîãî äâèæêà
PITTSATTRIBUTES m_pITTSAttributes;
// Èíòåðôåéñ ðàáîòû ñ óñòíîéñòâîì âûâîäà
PIAUDIOMULTIMEDIADEVICE m_pIMMD;
// Ìàññèâ ãëàáàëüíûõ èíäåíòèôèêàòîðîâ
GUID m_GUIDModes[500];

/////////////////////////////////////////////////////////////////////////////
// CMy555555555Dlg dialog

CMy555555555Dlg::CMy555555555Dlg(CWnd* pParent /*=NULL*/)
    : CDialog(CMy555555555Dlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CMy555555555Dlg)
    m_SpeechText = _T("");
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMy555555555Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CMy555555555Dlg)
    DDX_Control(pDX, IDC_COMBO1, m_CComboBoxModes);
    DDX_Text(pDX, IDC_EDIT1, m_SpeechText);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMy555555555Dlg, CDialog)
    //{{AFX_MSG_MAP(CMy555555555Dlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMy555555555Dlg message handlers

BOOL CMy555555555Dlg::OnInitDialog()
{
    CDialog::OnInitDialog();

        // Çàãðóçêà áèáëèîòåêè ðàáîòû ñ COM
    if (FAILED(::CoInitialize(NULL))) 
    {
            // Can't initialize COM library
            return FALSE;
    }


    // 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
    HRESULT hRes;
    m_pITTSEnum = NULL;

    hRes = CoCreateInstance (CLSID_TTSEnumerator,
    NULL,
    CLSCTX_ALL,
    IID_ITTSEnum,
    (void**)&m_pITTSEnum);

    
    PITTSENUM pClone1;
    TTSMODEINFO TTSModeInfo;
    DWORD dwNumTimes;
    int index = 0;

    // Ñîçäàåì êîïèþ èíòåðôåéñà ïåðå÷èñëåíèÿ êîìïîíåíò
    hRes = m_pITTSEnum -> Clone(&pClone1);
    // Ïðîâåðÿåì ðåçóëüòàò âûïîëíåíèÿ ïðåäûäóùåé îïåðàöèè    
    if(FAILED(hRes))
    {
            // Âûâîä ñîîáùåíèÿ îá îøèáêå
    MessageBox (TEXT("Couldn't clone ITTSEnum state, aborting      enumeration test"), TEXT("Error"), MB_OK );
            return FALSE;
    }
    // ×òåíèå èíôîðìàöèè î ïåðâîé èíòåðôåéñå â ïåðå÷èñëåíèè
    // Èìåíà êîìïîíåíò äîáàâëÿþòñÿ â êîìáèíèðîâàííûé ñïèñîê
    hRes = pClone1-> Next (1, &TTSModeInfo, &dwNumTimes);

    if(dwNumTimes == 0)
    {
            // Êîëè÷åñòâî óñòàíîâëåííûõ êîìïîíåíò ðàâíî íóëþ
            return FALSE;
        }
    // Ñîõðàíåíèå èíôîðìàöèè î êîìïîíåíòàõ
    while (dwNumTimes)
    { 
            // Ïðîâåðêà òèïà ðå÷åâîé êîìïîíåíòû
           if (TTSModeInfo.dwFeatures & TTSFEATURE_ANYWORD)
            {
                 // Êîìïîíåíòà âîñïðîèçâîäèò âñå ñëîâà
                m_CComboBoxModes.AddString(TTSModeInfo.szModeName);
            }
            else
            {
                 // Êîìïîíåíòà òîëüêî äëÿ ñïåöèôè÷åñêèõ ñëîâ 
                CString   sz;
                       sz  = TTSModeInfo.szModeName;
                       sz += " (Can only speak specific words!)";
                       m_CComboBoxModes.AddString(sz);
            }
            // Çàïèñûâàåì GUID êîìïîíåíòû â ìàññèâ
            m_GUIDModes[index++] = TTSModeInfo.gModeID;
            // Ïåðåõîä íà ñëåäóþùèé øàã ïåðå÷èñëåíèÿ            
            hRes = pClone1 -> Next (1, &TTSModeInfo, &dwNumTimes);
        }
    // Îñâîáîæäàåì óêàçàòåëü íà èíòåðôåéñ (ñïåöèôèêà ðàáîòû ñ COM)
    pClone1 -> Release();
    return TRUE;


        // Îñâîáîæäàåì èñïîëüçîâàííûå ðàíåå èíòåðôåéñû
    if(m_pITTSCentral)
    {
       // Îñâîáîæäåíèå èíòåðôåéñà ðå÷åâîé êîìïîíåíòû
       m_pITTSCentral->Release();
       m_pITTSCentral= NULL;
    }
    // Îñâîáîæäåíèå èíòåðôåéñà âûâîäà çâóêà
    if (m_pIMMD)
    {
    while (m_pIMMD->Release());
                m_pIMMD = NULL;
    }
    // Ïîëó÷åíèå èíäåêñà âûäåëåííîé ñòðîêè â ñïèñêå
    int i = m_CComboBoxModes.GetCurSel();
    // Ñîçäàåì íîâûé èíòåðôåéñ óñòðîéñòâà âûâîäà
    hRes = ::CoCreateInstance (CLSID_MMAudioDest,
                          NULL,
                          CLSCTX_ALL,
                          IID_IAudioMultiMediaDevice,
                          (void**)&m_pIMMD);
    // Ïðîâåðÿåì ðåçóëüòàò âûïîëíåíèÿ ïðåäûäóùåé îïåðàöèè
    if (FAILED(hRes))
    {
            // Âûâîä ñîîáùåíèÿ îá îøèáêå
            MessageBox(TEXT("Error creating AudioDest Object(CoCreateInstance), app will terminate."), NULL, MB_OK );
            
    }

    // Óñòàíàâëèâàåì íîâûé òåêóùèé èíòåðôåéñ.
        hRes = m_pITTSEnum -> Select(m_GUIDModes[i], &m_pITTSCentral, m_pIMMD);


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

// 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 CMy555555555Dlg::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 CMy555555555Dlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}

void CMy555555555Dlg::OnButton1() 
{

    // Çàïîëíÿåì ñòðóêòóðó, êîòîðàÿ çàäàåò âîñïðîèçâîäèìûé òåêñò 
   SDATA Text;
   Text.dwSize = strlen(m_SpeechText) + 1;
   Text.pData    = m_SpeechText.GetBuffer(0);
   // Ïðîèçíîñèì òåêñò
   m_pITTSCentral -> TextData(CHARSET_TEXT, FALSE, Text, NULL, IID_ITTSBufNotifySink);

}

void CMy555555555Dlg::OnOK() 
{
        // Îñâîáîæäåíèå áèáëèîòåêè COM
    ::CoUninitialize();
    CDialog::OnOK();
}




находит движки звуковые отображает их в комбобокс.....далее при нажатии на кнопку хочу прослушать произвольный текст с эдита....вот тут ругается...
точнее что-то в этом ему не нравится
Код

m_pITTSCentral -> TextData(CHARSET_TEXT, FALSE, Text, NULL, IID_ITTSBufNotifySink);


мот не туда куда вообще вставил ....сам не бум бум в етом...делал по докам которые нашёл...HELP 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.