Member 13588042 Ответов: 2

Я хочу реализовать распознавание речи в консольном приложении C++ с помощью sapi любая помощь будет оценена по достоинству


,я хочу получить вход для переключения через распознавание голоса
#include <iostream>
#include <string>
using namespace std;
int main()
{
string ch;
cin>>ch;
switch(ch)
{
case "1":
{
// do something here
}
}
system("Pause");
return 0;
}


Что я уже пробовал:

#include <stdafx.h>
#include <sapi.h>

int main(int argc, char* argv[])
{
    ISpVoice * pVoice = NULL;

    if (FAILED(::CoInitialize(NULL)))
        return FALSE;

    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice;);
    if( SUCCEEDED( hr ) )
    {
        hr = pVoice->Speak(L"Hello world", 0, NULL);
        pVoice->Release();
        pVoice = NULL;
    }

    ::CoUninitialize();
    return TRUE;
}

я сделал tts по этому коду

2 Ответов

Рейтинг:
1

Richard MacCutchan

После исправления ошибки в вашем коде

HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice); // removed semicoln aftger pVoice

это работает.

Теперь вам нужно объяснить, что еще вы пытаетесь сделать.


Member 13588042

на самом деле tts работает отлично, но я хочу сделать распознавание речи с помощью sapi

Richard MacCutchan

Затем вам нужно изучить документацию, чтобы узнать, как это сделать.

Рейтинг:
0

Jochen Arndt

C/C++ switch оператор не работает со строками. Условие должно быть целочисленным или перечислительным (см. оператор switch - cppreference.com[^]).

Но вы можете использовать одиночные символы:

char ch;
cin >> ch;
switch (ch)
{
case '1':
    // do something here
    break;
}

В противном случае вам придется использовать if - else [if] блоки или цикл проверки элементов таблицы подстановки.