#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 и как бы это исправить?
Это TEXT(sounds[k])
это вызывает проблему. TEXT()
это макрос, который расширяется до L
после чего вы набираете внутри, так что это эквивалент Lsounds[k]
отсюда и ошибка.
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);
}