怎么用C语音说话,读汉字,读英文都行。

我想写一个C语言小程序(就是黑框框的那种),我想让它把我的句子读出来,比如早上好之类的。

google里面搜索microsoft tts或者text to speach

这里有一个VB程序的,

 set objTTS = CreateObject("sapi.spvoice")
objTTS.speak("你好呀。")

用记事本保存,然后把记事本文本文件后缀名改为vbs

用C调用Google 语音的API即可

VS下根据官方示例简单改变做的小例子

#define _ATL_APARTMENT_THREADED
//#include <afx.h>
//extern CComModule _Module;
#include <stdio.h>
#include <atlbase.h>
#include <atlcom.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))
    {
        FILE* file;
        file = fopen("C:\\Users\\zhouchong\\Desktop\\txt\\auotomedian.txt", "r");
        if (file == NULL)
        {
            return 0;
        }
        else
        {
            char buff[1024];
            USES_CONVERSION;
            while (fgets(buff, 1024, file) != NULL)
            {
            //  hr = pVoice->Speak(L"Hello world", 0, NULL);
                wchar_t* test12 = A2W(buff);
                hr = pVoice->Speak(test12, 0, NULL);

            }
            pVoice->Release();
            pVoice = NULL;
        }
        ::CoUninitialize();
    }

    return TRUE;
} 

微软MSDN示例链接:Text-to-Speech Tutorial.aspx "")

推荐讯飞的平台做这个,可以做翻译。如果需要从图像抓取还需要OCR

楼上的就可行,或者你找百度的文字转语音接口服务也可以实现

从头写肯定不现实,可以在网上找现成的库,你来调用,也可以找一些免费的服务

http://blog.csdn.net/qqj_1228/article/details/5203982

如果想说文字的话,可能需要调用语音API,但是比较麻烦,就像楼上说的用VBS可能更适合你。ps:如果想用C语言编写一首歌的话不妨尝试Beep函数
虽然艺术性不强,但还是蛮有趣的,贴一段生日歌代码

 #include <Windows.h>
#include <stdio.h>
#include <process.h>
VOID Sound(LPVOID lp) {
    unsigned FREQUENCY[]= {392,392,440,392,523,494,
                           392,392,440,392,587,523,
                           392,392,784,659,523,494,440,
                           698,698,659,523,587,523,
                           392,392,440,392,523,494,
                           392,392,440,392,587,523,
                           392,392,784,659,523,494,440,
                           698,698,659,523,587,523
                          };
    unsigned DELAY[]= {375,125,500,500,500,1000,
                       375,125,500,500,500,1000,
                       375,125,500,500,500,500,1000,
                       375,125,500,500,500,1000,
                       375,125,500,500,500,1000,
                       375,125,500,500,500,1000,
                       375,125,500,500,500,500,1000,
                       375,125,500,500,500,1000
                      };
    int BEATS;
    for(BEATS=0; BEATS<50; BEATS++) {
        Beep(FREQUENCY[BEATS],DELAY[BEATS]);
    }
}
VOID Print(LPVOID lp) {
    printf("现在给我的儿子xxx唱上生日歌!"); 
}
int main() {
    _beginthread(Sound, 0, NULL);
    _beginthread(Print, 0, NULL);
    Sleep(20000);
    return 0;
}