資源簡介
代碼簡介:本代碼使用純C實現語音的合成(女聲,話質可以),可以在windwos和linux下直接使用。編譯生成可執行程序(修改初始文本位置、生成位置即可)
代碼片段和文件信息
/*
*?語音合成(Text?To?Speech,TTS)技術能夠自動將任意文字實時轉換為連續的
*?自然語音,是一種能夠在任何時間、任何地點,向任何人提供語音信息服務的
*?高效便捷手段,非常符合信息時代海量數據、動態更新和個性化查詢的需求。
*/
#include?
#include?
#include?
#include?
#include?
#include?“qtts.h“
#include?“msp_cmn.h“
#include?“msp_errors.h“
#ifdef?_WIN64
#pragma?comment(lib“../../libs/msc_x64.lib“)//x64
#else
#pragma?comment(lib“../../libs/msc.lib“)//x86
#endif
/*?wav音頻頭部格式?*/
typedef?struct?_wave_pcm_hdr
{
char????????????riff[4];????????????????//?=?“RIFF“
int size_8;?????????????????//?=?FileSize?-?8
char????????????wave[4];????????????????//?=?“WAVE“
char????????????fmt[4];?????????????????//?=?“fmt?“
int fmt_size; //?=?下一個結構體的大小?:?16
short?int???????format_tag;?????????????//?=?PCM?:?1
short?int???????channels;???????????????//?=?通道數?:?1
int samples_per_sec;????????//?=?采樣率?:?8000?|?6000?|?11025?|?16000
int avg_bytes_per_sec;??????//?=?每秒字節數?:?samples_per_sec?*?bits_per_sample?/?8
short?int???????block_align;????????????//?=?每采樣點字節數?:?wBitsPerSample?/?8
short?int???????bits_per_sample;????????//?=?量化比特數:?8?|?16
char????????????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?text_to_speech(const?char*?src_text?const?char*?des_path?const?char*?params)
{
int??????????ret??????????=?-1;
FILE*????????fp???????????=?NULL;
const?char*??sessionID????=?NULL;
unsigned?int?audio_len????=?0;
wave_pcm_hdr?wav_hdr??????=?default_wav_hdr;
int??????????synth_status?=?MSP_TTS_FLAG_STILL_HAVE_DATA;
if?(NULL?==?src_text?||?NULL?==?des_path)
{
printf(“params?is?error!\n“);
return?ret;
}
fp?=?fopen(des_path?“wb“);
if?(NULL?==?fp)
{
printf(“open?%s?error.\n“?des_path);
return?ret;
}
/*?開始合成?*/
sessionID?=?QTTSSessionBegin(params?&ret);
if?(MSP_SUCCESS?!=?ret)
{
printf(“QTTSSessionBegin?failed?error?code:?%d.\n“?ret);
fclose(fp);
return?ret;
}
ret?=?QTTSTextPut(sessionID?src_text?(unsigned?int)strlen(src_text)?NULL);
if?(MSP_SUCCESS?!=?ret)
{
printf(“QTTSTextPut?failed?error?code:?%d.\n“ret);
QTTSSessionEnd(sessionID?“TextPutError“);
fclose(fp);
return?ret;
}
printf(“正在合成?...\n“);
fwrite(&wav_hdr?sizeof(wav_hdr)?1?fp);?//添加wav音頻頭,使用采樣率為16000
while?(1)?
{
/*?獲取合成音頻?*/
const?void*?d
- 上一篇:03_UVM-Harness.pdf
- 下一篇:億辰PCI串口貓池驅動.rar
評論
共有 條評論