⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dllsudx.h

📁 语音识别:语音矢量化及算法及与原文件的矢量对比功能源代码
💻 H
字号:

// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the IZONESYS_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// IZONESYS_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.

#ifndef DLL_SOUNDEX_H
#define DLL_SOUNDEX_H

#include "SoundTag.h"

#ifdef __cplusplus
extern "C"{
#endif

//初始化与Soundex2引擎的通讯。应用程序首先要调用这个函数
//返回值:TRUE 初始化正常,FALSE初始化失败。
//其它的函数必须初始化正常后才能够工作
BOOL WINAPI sudxInit();

//关闭与Soundex2引擎的连接
void WINAPI sudxExit();

//计算输入缓冲区中音频样本的特征值
//输入参数:
// short*	pBuffer	: 指向包含音频数据的缓冲区,音频数据采用Intel 16位整数型 PCM格式保存
// int		size	: pBuffer中包含多少个样本,每个样本都是一个16bit整数
// TSoundTag** pOut	: 返回值,包含指向特征值的数组,其中每个元素都是一个TSoundTag结构.
//					  应用程序必须将这些数据拷贝出来,进行处理。
// int*		pOutSize: 返回值,表示pOut包含多少个TSoundTag结构
// short**	pTail	: 返回值:指向本次计算残留的样本。
// int*		pTailSize: 返回值:表示本次计算残留的样本个数
// int*		pLastResult : 一个17个整数的数组, 输入是上一次计算的暂存结果,输出是这一次计算的暂存结果,用于下一次计算
// 返回值>=0表示操作成功。
int WINAPI sudxCalcBuffer(	short* pBuffer,		int size, 
							TSoundTag** pOut,	int *pOutSize, 
							short** pTail,		int *pTailSize,
							int* pLastResult);

//返回一次可以传递给识别引擎的样本数的最大值
int WINAPI sudxGetMaxInputSampleSize(void);

//设置判别门限,threshold的取值范围是65-95.成功返回TRUE,否则为FALSE;
//BOOL WINAPI sudxSetThreshold(int threshold);

//对计算音频文件ifName,把输出的特征数据写入ofName向量文件。
//ifName采用标准的Windows Wav格式,现在支持Alaw和Intel PCM 16bit两种。
int WINAPI sudxCalcFile(char* ifName, char* ofName);


//对计算音频文件ifName,把输出的特征数据写入ofName向量文件。
//ifName采用Intel 16bit RAW DATA 格式。
int WINAPI sudxCalcPcm16File(char* ifName, char* ofName);


//对两段特征向量进行比对,IsHighPrec=TRUE表示采用高精度比较法,速度慢。FLASE表示采用快速比较法。
BOOL WINAPI sudxCompare(TSoundTag* s1, TSoundTag* s2, BOOL isHighPrec);

//同上,但是可以返回比较的得分值。该值在0-100之间。
BOOL WINAPI sudxCompareEx(TSoundTag* s1, TSoundTag* s2, BOOL isHighPrec, int* pScore);

//同上,但是可以指定两个序列的长度,要求长度在64-300之间
BOOL WINAPI sudxCompareEx1(TSoundTag* s1, TSoundTag* s2, int len, int* pScore);

//分段式匹配函数,用于解决部分音频不能识别的问题
//segCount表示需要把文件分成多少段比较
//pScores返回每段的得分
//equalCount返回共有多少段匹配成功
//返回值TRUE表示计算结果有效,FALSE表示计算结果无效,可能是分段后,每段数据的长度太小
BOOL WINAPI sudxSegCompare(TSoundTag* s1, TSoundTag* s2, int len, int segCount, int* pScores, int* equalCount);


//工具函数,Alaw 到 Intel 16 Bit PCM转换
// in  是输入的Alaw数据缓冲区
// size 是缓冲区的大小
// out 用于保存输出的数据,out必须是in的两倍大小,in 和out都由调用者分配。
void WINAPI alaw2linear(const unsigned char* in, int size, short* out);


//Intel 16Bit PCM 到uLaw转换
//in : 输入缓冲区
//out:输出缓冲区
//length:输入缓冲区的大小,单位是字节
//返回值:输出缓冲区内有效数据的字长度
int WINAPI ulawEncode(const short *in, unsigned char *out, int length);

//uLaw到Intel 16Bit PCM转换
//in : 输入缓冲区
//out:输出缓冲区
//length:输入缓冲区的大小,单位是样本数(两个字节)
//返回值:输出缓冲区内有效数据的字节长度
int WINAPI ulawDecode(const unsigned char *in, short *out, int length);


//以下函数设置进行矢量之前,要把声音放大或者缩小多少倍, i取值范围是-4到+4,
// -4 : 样本缩小16倍
// -3	: 样本缩小8倍
// -2 : 样本缩小4倍
// -1 :样本缩小2倍
// 0  :样本部进行放大缩小(缺省值)
//	1 :样本放大2倍
// 2 :样本放大4倍
// 3 :样本放大8倍
// 4:样本放大16倍
//
//  返回值:TRUE 设置成功, FALSE设置失败
BOOL WINAPI sudxSetAmp(int i);
//获取放大系数
int WINAPI sudxGetAmp(void);


//2005年8月4日新增函数,可设置比较结果是否与参与比较的两段声音的音量相关。
// flag = TRUE(1),表示比较与音量有关,
// flag = false(0),表示比较与音量无关。
// 该参数设置以后,会影响此后所有的sudxComp...类的函数结果
// 这个标志为缺省值TRUE,表示比较结果是与音量相关的。
void WINAPI sudxSetCompVolumeFlag(BOOL flag);

//2005年8月4日新增函数,可获取比较结果是否与音量相关的参数
// 返回值:0,表示比较与音量无关,
//				非0,表示比较与音量有关。
BOOL WINAPI sudxGetCompVolumeFlag(void);


#ifdef __cplusplus
}
#endif


#endif	//DLL_SOUNDEX_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -