科大讯飞语音识别

头文件:

// 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 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>