C ++ Text-To-Speech неопределенные ошибки

#include <windows.h>
#include <mmsystem.h>
#include <iostream>
#include <string.h>
#include <fstream>

char *sounds[] = {"d.wav","ai.wav","v.wav","i.wav"};

int main()
{
char input[20];
int k;
int i = 0;
std::cin >> input;
while (input[i])
{
k = input[i] - 'a';
PlaySound(TEXT(sounds[k]), NULL, SND_ASYNC);
}
system("pause");
}

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

int k, читает входные данные и воспроизводит файл .wav, связанный со строкой, которая читается. Проблема возникает из PlaySound(TEXT(sounds[k]), NULL, SND_ASYNC);, Ошибки читаются 🙁IntelliSense: идентификатор «Lsounds» не определен) а также (ошибка C2065: «Lsounds»: необъявленный идентификатор). Которые оба, кажется, означают то же самое, однако, я не могу найти источник проблемы или причины ее возникновения. Как был / не определен Lsounds и как бы это исправить?

0

Решение

Это TEXT(sounds[k]) это вызывает проблему. TEXT() это макрос, который расширяется до L после чего вы набираете внутри, так что это эквивалент Lsounds[k]отсюда и ошибка.

0

Другие решения

PlaySound API используется для воспроизведения файлов WAVE. Вы должны использовать SAPI COM-интерфейс для TTS:

CComPtr <ISpVoice>  cpVoice;

//Create a SAPI Voice
HRESULT hr = cpVoice.CoCreateInstance(CLSID_SpVoice);

if(SUCCEEDED(hr))
{
cpVoice->Speak(L"Hello World",  SPF_DEFAULT, NULL);
}
0

По вопросам рекламы [email protected]