资源简介
代码简介:本代码使用纯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
相关资源
- ModelGoon-4.4.1-site.zip
- AsyncTask文件控制暂停和继续,在状态
- Visio大全模具(含Cisco、IBM等常用拓扑
- 信号奇异点Lipschitz指数计算
- 基于STM32RCT6的步进电机驱动程序
- 酒店管理系统基于Qt Creator5)
- 用友NC开发API字典
- Navicat Premium 15汉化包.zip55438
- 登录注册界面.zip48872
- 条码字体barcode128
- Rational Rose Common破解文件
- res10_300x300_ssd_iter_140000.caffemodel与dep
- scratch 第1课 翻跟斗的小猫(入门)
- stm32f407上的两个can发送和接收例程
- Scrach 欢乐狙击手.sb2
- 04741计算机网络原理知识点整理.docx(
- Wolfram Mathematica 矩阵初等变换函数(
- pscad近海风电模型 Fortran语言
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- AutoCAD永久去教育版破解补丁
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- 用Beckhoff(倍福)PLC读写巴鲁夫RFID
- CVSNT 完整覆盖版防TortoiseCVS中文乱码
- pfc 使用说明.doc
- Scratch 飞机大战.sb3
- STC8951系列单片机中方指南
评论
共有 条评论