日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

讯飞C/C++语音合成基础篇

發布時間:2025/3/15 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 讯飞C/C++语音合成基础篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先到訊飛上注冊一個帳號(感覺訊飛官網和阿里云官網的差不多)


隨后創建一個新應用(Windows平臺下)


最后我們要的是Appid如下圖所示



下面是訊飛SDK(含說明文檔)下載地址:

鏈接:http://pan.baidu.com/s/1i45xEo1 密碼:m8il


因為此程序涉及WAV語音知識,未了解WAV的朋友請百度補充,或者在下面這個鏈接初略的學習下

http://blog.csdn.net/qq78442761/article/details/53385561


下面先來認識下幾個API(從文檔提取出來)

1.int MSPAPI MSPLogin (const char *usr, const char *pwd, const char *params) //初始化msc,用戶登錄。

usr[in] 此參數保留,傳入NULL即可。
pwd[in] 此參數保留,傳入NULL即可。

官方例子

const char* usr = NULL; const char* pwd = NULL; const char* lgi_param = "appid = ********"; int ret = MSPLogin(usr, pwd, lgi_param); if( MSP_SUCCESS != ret ) {printf( "MSPLogin failed, error code is: %d", ret ); }

2.const char *MSPAPI QTTSSessionBegin (const char *params, int *errorCode) //開始一次語音合成,分配語音合成資源。

(信息有點多,參數具體見文檔qtts.h 文件參考)

下面是官方例子

const char * ssb_param = "voice_name = xiaoyan, aue = speex-wb;7, sample_rate = 16000, speed = 50, volume = 50, pitch = 50, rdn = 2"; int ret = -1; const char * sessionID = QTTSSessionBegin( ssb_param, &ret ); if( MSP_SUCCESS != ret ) {printf( “QTTSSessionBegin failed, error code is: %d”, ret ); }


3.const void *MSPAPI QTTSAudioGet (const char *sessionID, unsigned int *audioLen, int *synthStatus, int *errorCode) //獲取合成音頻
(信息有點多,參數具體見文檔qtts.h 文件參考)

例子

FILE* fp = fopen("tts.pcm", "wb"); while (1) {const void * data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);if (NULL != data){fwrite(data, audio_len, 1, fp);}if (MSP_TTS_FLAG_DATA_END == synth_status || MSP_SUCCESS != ret){break;} } fclose(fp);


4.int MSPAPI QTTSSessionEnd (const char *sessionID, const char *hints) //結束本次語音合成。

int ret = QTTSSessionEnd ( sessionID, “normal end” ); if( MSP_SUCCESS != ret ) {printf( “QTTSSessionEnd failed, error code is: %d”, ret ); }


下面是完整項目的代碼:

幾個個文件1.stdafx.h。2.targetver.h。3.QTTSDemo.cpp。4.stdafx.cpp。

除了QTTSDemo.cpp外,其他文件都是vs2013創建控制臺程序自帶的,在此只給出QTTSDemo.cpp代碼

但注意在stdafx.h中加入#define _CRT_SECURE_NO_WARNINGS


QTTSDemo.cpp

// QTTSDemo.cpp : 定義控制臺應用程序的入口點。 //#include "stdafx.h" #include <msp_cmn.h> #include <msp_errors.h> #include <qtts.h> #include <string.h> #include <windows.h>#pragma comment(lib,"WinMM.lib")#ifdef _WIN64 #pragma comment(lib,"msc_x64.lib") #else #pragma comment(lib,"msc.lib") #endif//wav音頻頭部格式 typedef struct _wave_pcm_hdr {char riff[4]; //="RIFF"int size_8; //=FileSize=8char wave[4]; //="WAVE"char fmt[4]; //="fmt"int fmt_size; //=下一個結構體的大小:16short int format_tag; //=PCM:1short int channels; //=通道數:1int samples_per_sec; //=采樣率:8000|6000|16000int avg_bytes_per_sec; //=每秒字節數:samples_per_sec*bit_per_sampleshort int block_align; //=每采樣點字節數:wBitsPerSample/8short int bits_per_sample; //=量化比特數:8|16char data[4]; //="data";int data_size; //=純數據長度:FileSize-44 }wave_pcm_hdr;/*默認wav音頻頭部數據*/ wave_pcm_hdr default_wav_hdr = {{ 'R', 'I', 'F', 'F' },0,{ 'W', 'A', 'V', 'E' },{ 'f', 'm', 't', ' ' },16,1,1,16000,32000,2,16,{ 'd', 'a', 't', 'a' },0 };int _tmain(int argc, _TCHAR* argv[]) {//登錄const char* usr = NULL;const char* pwd = NULL;const char* lgi_param = "appid = 583aea17";int ret = MSPLogin(usr, pwd, lgi_param);if (MSP_SUCCESS != ret){printf("MSPLogin failed, error code is: %d", ret);}//開始合成const char * ssb_param = "voice_name = xiaorong, aue = speex-wb;7, sample_rate = 16000, speed = 50, volume = 80, pitch = 50, rdn = 2";ret = -1;const char * sessionID = QTTSSessionBegin(ssb_param, &ret);if (MSP_SUCCESS != ret){printf("QTTSSessionBegin failed, error code is : %d", ret);}//設置待合成文本char src_text[1024];printf("請輸入一段文字(中文注意逗號,句話):\n");gets(src_text);unsigned int text_len = strlen(src_text); //textLen參數為合成文本所占字節數ret = QTTSTextPut(sessionID, src_text, text_len, NULL);if (MSP_SUCCESS != ret){printf("QTTSTextPut failed, error code is : %d", ret);}//獲取合成的音頻wavFILE* fp = fopen("Demo.wav", "wb"); //一定是二進制模式fwrite(&default_wav_hdr, sizeof(default_wav_hdr), 1, fp);unsigned int audio_len = 0;int synth_status = 0;while (1){const void * data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);if (NULL != data){fwrite(data, audio_len, 1, fp);default_wav_hdr.data_size += audio_len;}if (MSP_TTS_FLAG_DATA_END == synth_status || MSP_SUCCESS != ret){break;}}default_wav_hdr.size_8 += default_wav_hdr.data_size + (sizeof(default_wav_hdr)-8);fseek(fp, 4, 0);fwrite(&default_wav_hdr.size_8, sizeof(default_wav_hdr.size_8), 1, fp); //寫入size_8的值fseek(fp, 40, 0); //將文件指針偏移到存儲data_size值的位置fwrite(&default_wav_hdr.data_size, sizeof(default_wav_hdr.data_size), 1, fp);//寫入data_size的值fclose(fp);PlaySoundA("Demo.wav", NULL, SND_ASYNC);ret = QTTSSessionEnd(sessionID, "normal end");if (MSP_SUCCESS != ret){printf("QTTSSessionEnd failed, error code is : %d", ret);}//退出ret = MSPLogout();if (MSP_SUCCESS != ret){printf("MSPLogout failed, error code is: %d", ret);}system("pause");return 0; }


總結

以上是生活随笔為你收集整理的讯飞C/C++语音合成基础篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看国产91 | 大黄一级片 | 欧美激情999 | 伊伊成人 | 国产精品2018| 亚洲欧美日韩精品在线观看 | 免费一级全黄少妇性色生活片 | aaa一区二区 | 一区二区三区xxx | 午夜影院一区二区三区 | 成人免费观看在线视频 | 久久国产精品无码一级毛片 | 豆豆色成人网 | 无码专区久久综合久中文字幕 | 中国在线观看免费视频 | 极品少妇xxxx精品少妇偷拍 | 亚洲性综合 | 狼人综合伊人 | 国产精品suv一区二区 | 加勒比视频在线观看 | 草草影院地址 | 亚洲一区亚洲二区 | 久久久999| 91人人草| 久久黄色网 | 久久久久精彩视频 | 欧美一区二区三区粗大 | 在线免费观看污视频 | 午夜在线观看视频18 | 96av在线视频| www.av.cn| 天堂中文在线播放 | 台湾佬中文字幕 | 深夜国产福利 | 中文一二区 | 福利视频一区二区 | 九一天堂 | 神马久久香蕉 | 毛片毛片毛片毛片 | 午夜影视体验区 | 亚洲精品国产精品国自产观看浪潮 | 国产日韩一区 | 久久久久人妻一区精品 | 欧美日韩综合网 | 亚洲一区二区三区四区不卡 | 中国免费黄色片 | 日本护士取精xxxxxhd | 91免费在线视频 | 在线国产小视频 | 亚洲精品一二三四 | 久久视奸 | 黑人一区二区 | 欧美激情电影一区二区 | 国产精品无码成人片 | 天堂福利在线 | 欧美成人精品一区二区综合免费 | 亚欧洲精品在线视频 | 国产成人无码a区在线观看视频 | 黄色顶级片 | 国产黄在线播放 | 日本一区免费视频 | 国产精品大屁股白浆一区 | 97久久久| 一二三四区在线 | 九色视频在线播放 | 无码人妻丰满熟妇区毛片蜜桃精品 | 中文在线а√天堂 | 久久国产精品区 | 中文字幕亚洲不卡 | 欧美不卡一区 | 久久激情婷婷 | 在线日韩中文字幕 | 99热r | 日本福利社 | 污视频在线观看网站 | 一区二区在线免费观看视频 | 亚洲天堂777| 日韩天堂 | 国产精品久久久久久网站 | 欧美精品久久久久性色 | 欧美日韩国产亚洲一区 | 国产高清在线观看视频 | 人人色视频 | av地址在线 | 一区二区三区xxx | 欧美三级韩国三级日本三斤在线观看 | 婷婷综合亚洲 | 日韩性大片 | av网址网站| 又欲又污又肉又黄短文 | 99精品欧美一区二区三区综合在线 | 91色片| 手机av在线播放 | 一区二区免费 | 日日噜噜噜噜人人爽亚洲精品 | 色婷婷一区 | 日韩毛片免费看 | 男人肌肌桶女人肌肌 | 天天综合永久入口 |