0
#include <sapi.h>
#include <string>
#include <iostream>
//User inputs what is to be said//
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))
{
std::wstring input;
while (true)
{
std::cout << "Enter text:\n";
std::getline(std::wcin, input);
hr = pVoice->Speak(input.c_str(), 0, NULL);
}
}
pVoice->Release();
pVoice = NULL;
::CoUninitialize();
return 0;
}
上面的代碼允許用戶輸入他們想要發言和完美工作的內容。C++ sapi:用戶輸入,編輯語音輸出
下面是改變音高的MSDN方法,任何其他類似的操作都以相同的方式完成。
hr = pVoice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL);
我想改變音調,但無法弄清楚如何用我的代碼做同樣的動作。
所以這個問題並不是關於SAPI,而是關於字符串操作。 – chris
我認爲這與sapi有關。來自MSDN的方法使用''方法來處理音頻,這是嚴格意義上的事情。如果這個動作是操縱字符串,我現在不會如何完成它。 –
根據你的問題,改變音高意味着將元信息添加到字符串的一部分。那裏唯一與SAPI相關的東西是添加塊的內容。但是,要回答這個問題,添加的內容可以是任何東西,它的工作方式也是一樣的。 – chris