科大讯飞语音识别
头文件:
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: 在此处引用程序需要的其他头文件
头文件:
targetver
#pragma once
// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。
// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将
// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。
#include <SDKDDKVer.h>
源文件
qttedemo
// qttsdemo1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<msp_cmn.h>
#include<msp_errors.h>
#include<windows.h>
#include<qtts.h>
#include<string>
#ifdef _WIN64
#pragma comment(lib,"msc_x64.lib")
#else
#pragma comment(lib,"msc.lib")
#endif
//wav音频头部文件格式
typedef struct _wave_pcm_hdr
{
char riff[4];
int size_8;
char wave[4];
char fmt[4];
int fmt_size;
short int format_tag;
short int channels;
int samples_per_sec;
int avg_bytes_per_sec;
short int block_align;
short int bits_per_sample;
char data[4];
int data_size;
} wave_pcm_hdr;
//morenwav音频头部数据
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 main()
{
const char* usr = NULL;
const char* pwd = NULL;
const char* lgi_param = "appid = 581da153";
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 = donaldduck, aue = speex-wb;7, sample_rate = 16000, speed = 50, volume = 50, 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 );
}
//设置带合成文本
const char* 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 );
}
//获取合成音频wav
FILE* fp = fopen("PoEuDemo.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;
}
}
fclose(fp);
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);
fseek(fp,40,0);
fwrite(&default_wav_hdr.data_size,sizeof(default_wav_hdr.data_size),1,fp);
fclose(fp);
ret = QTTSSessionEnd ( sessionID, "normal end" );
if( MSP_SUCCESS != ret )
{
printf( "QTTSSessionEnd failed, error code is: %d", ret );
}
int ret3 = MSPLogout( );
if(MSP_SUCCESS != ret)
{
printf("MSPLogout failed, error code is: %d", ret);
}
system("pause");
return 0;
}
源文件:
stdafx
// stdafx.cpp : 只包括标准包含文件的源文件
// qttedemo.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息
#include "stdafx.h"
// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用
版权声明:本文为qq_36150323原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。