首页 > 学院 > 开发设计 > 正文

科大讯飞语音识别

2019-11-06 06:58:17
字体:
来源:转载
供稿:网友

头文件:

// 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 中// 引用任何所需的附加头文件,而不是在此文件中引用
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表