📄 main.cpp
字号:
/*************************************************************************
Program: 16kto8k
Function: Convert 16k sample speech data to 8k sample data
Usage: arg[0] Input_Dir Output_Dir
Finish time: 2002.10.25
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#include "ConvertToG723Data.h"
int main(int argc, char ** argv)
{
long i;
char str[_MAX_FNAME];
char File_dirtxt[_MAX_PATH], Dir_Current[_MAX_PATH];
char Dir_SpeechIn[_MAX_PATH], Dir_SpeechOut[_MAX_PATH];
char FileName_SpeechIn[_MAX_PATH], FileName_SpeechOut[_MAX_PATH];
FILE *fp_dirtxt = NULL, *fp_SpeechIn = NULL, *fp_SpeechOut = NULL;
short SpeechFileNum;
bool bFOpenNoError = true;//文件打开是否有错
sprintf( File_dirtxt, "%s\\dir.txt", argv[1] );//从dir.txt中得到需要处理的语音文件名和数目
strcpy( Dir_SpeechIn, argv[1]);//命令行第一个参数是输入语音所在的目录
strcpy( Dir_SpeechOut, argv[2]);//命令行第二个参数是输出语音所在的目录
_getcwd( Dir_Current, _MAX_PATH );//得到当前命令 argv[0] 所在目录
fp_dirtxt = fopen( File_dirtxt,"rt" );
if( fp_dirtxt == NULL ){
perror("File open error: dir.txt\n");
exit(1);
}
fscanf( fp_dirtxt, "%d", &SpeechFileNum);//语音文件数
for( i = 0; i < SpeechFileNum; i++ ){
fscanf( fp_dirtxt, "%s", str );//语音文件名
sprintf( FileName_SpeechIn, "%s\\%s", Dir_SpeechIn, str );
sprintf( FileName_SpeechOut, "%s\\8k_%s", Dir_SpeechOut, str );
fp_SpeechIn = fopen( FileName_SpeechIn, "rb");
if( fp_SpeechIn == NULL ){
perror("File open error: speech data IN file\n");
bFOpenNoError = false;
break;
}
fp_SpeechOut = fopen( FileName_SpeechOut, "wb");
if( fp_SpeechOut == NULL ){
perror("File open error: speech data OUT file\n");
bFOpenNoError = false;
break;
}
//开始转换数据:原始语音16k->8k之后
printf("\n当前处理文件:%s\n", str);
ConvertToG723Data( fp_SpeechIn, fp_SpeechOut, Dir_Current);
fclose( fp_SpeechIn );
fclose( fp_SpeechOut );
}
fclose( fp_dirtxt );
if( bFOpenNoError )
return 0;
else
return 1;
}
/*16kto8k 使用方法:
命令功能:将16k采样16bit short型语音数据转换为 8k采样16bit short型
作者:茹海波
完成日期:2002.10.25
1.使用命令 16kto8k 前的准备
(1)进入需要转换的语音所在的目录,该目录下都是原始语音,16k采样,16bit。
如:cd F:\WorkInLab\Porject\监听\采集数据\茹海波
如果此时使用dir,显示以下结果:
驱动器 F 中的卷是 DATA
卷的序列号是 643B-9A08
F:\WorkInLab\Porject\监听\采集数据\茹海波 的目录
2002-04-09 08:51 <DIR> .
2002-04-09 08:51 <DIR> ..
2002-04-09 08:44 6,165,528 M_茹海波_关键词表.dat
2002-04-09 08:44 1,759 M_茹海波_关键词表.py
2002-04-09 08:44 7,881,752 M_茹海波_句子表1.dat
2002-04-09 08:44 5,453 M_茹海波_句子表1.py
2002-04-09 08:44 1,519,832 M_茹海波_句子表2.dat
2002-04-09 08:44 589 M_茹海波_句子表2.py
2002-04-09 08:44 860,480 M_茹海波_人名表.dat
2002-04-09 08:44 344 M_茹海波_人名表.py
9 个文件 16,435,828 字节
2 个目录 5,985,124,352 可用字节
(2)使用dir命令,将原始语音的文件名输入到文本文件:dir.txt。选择合适的命令开关可以使无用的垃圾信息不必输入到文本文件。
如:dir *.dat /b/on > dir.txt
结果在dir.txt中的内容是:
M_茹海波_关键词表.dat
M_茹海波_句子表1.dat
M_茹海波_句子表2.dat
M_茹海波_人名表.dat
(3)用文本编辑器修改dir.txt,在第一行写上dir.txt中文件名的个数,并保证每个文件名占据一行。
2. 16kto8k 命令的使用方法
16kto8k 文件dir.txt所在目录 转换后语音文件的存储目录
如:16kto8k F:\WorkInLab\Porject\监听\采集数据\茹海波 F:\WorkInLab\UnderWin2k\16kto8k\SpeechOut
注:(1)dir.txt所在目录应该是dir.txt中的文件所在的目录
(2)运行 16kto8k 时请加上正确的路径
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -