tts引擎和数据

资料来自:
[url]http://blog.csdn.net/dedodong/archive/2006/08/22/1105879.aspx[/url]

取得每个汉字读音的代码
#include <stdio.h>
#include <unistd.h>
#define maxlen 32000

int main(){

FILE * fpr;
FILE * fpw;

//打开临时r.wav语音库
if((fpr=fopen("r.wav","r+"))==NULL){
printf("open r.wav error");
return -1;
}
//打开w.wav文件
if((fpw=fopen("w.wav","w+"))==NULL){
printf("open w.wav error");
return -1;
}

char head[46];//存放wav的头信息
char data[1000];
char buffer[maxlen];//存放每个汉字的读音
int fpoint;//文件当前的位置
int fpointtemp=47;
int isnozero=1;
int num=0;

memset(buffer,0,sizeof(buffer));//初始化buffer
fread(head,sizeof(head),1,fpr);//读wav的头信息46个字节
fwrite(head,sizeof(head),1,fpw);//把头信息写到w.wav文件中去
fread(buffer,sizeof(buffer),1,fpr);
fwrite(buffer,sizeof(buffer),1,fpw);

while(!feof(fpr)){//读文件的信息,直到文件尾


// printf("*****************\n");

//读16个字节判断.找到第一次出现都为0的位置
isnozero=1;
while(isnozero){
fread(data,16,1,fpr);


int i;
int j;
int k=0;
for(i=0;i<16;i++){
j=(int)data[i];
k+=j;


}
if(k==0){
printf("read 1000\n");
fread(data,1000,1,fpr);
if(feof(fpr)){

printf("文件被读完1");
fpoint=ftell(fpr);
printf("fpoint si :%d",fpoint);

exit(1);

}

for( i=0;i<1000;i++){
j=(int)data[i];
k+=j;


}
if(k==0){
fpoint=ftell(fpr);
isnozero=0;
printf(" fpoint data is :%d\n",fpoint);

}else{

isnozero=1;


}



}else{

isnozero=1;

}





}

//找到非0的那一行

int iszero=1;
while(iszero){
fread(data,16,1,fpr);

// printf("num is :%d\n",num);


if(feof(fpr)){
printf("num is :%d\n",num);
printf("文件读完了\n");
fpoint=ftell(fpr);

printf("file len is :%d",fpoint);
fclose(fpr);
fclose(fpw);
exit(-1);

}
int i,j,k=0;
for(i=0;i<16;i++){

j=(int)data[i];
k+=j;
// printf("k is :%d\n",k);

}
if(k==0){
iszero=1;
// printf("k==0\n");


}else{
iszero=0;



fseek(fpr,fpoint-16,SEEK_SET);
int isz=1;
while(isz){

fread(data,1,1,fpr);
if((int)data[0]!=0){

//主要的工作{得到每个汉字的语音数据}
fpoint=ftell(fpr);
printf(" num is --%d fpoint is :%d\n",++num,fpoint);

fseek(fpr,fpoint-2,SEEK_SET);
fread(buffer,sizeof(buffer),1,fpr);
fwrite(buffer,sizeof(buffer),1,fpw);
isz=0;

}

}





}


}
}



fclose(fpr);
fclose(fpw);
return 0;


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用集成TTS引擎的过程相对简单。TTS(Text-To-Speech)引擎允许应用程序将文本转换为可听的语音,从而为用户提供更好的用户体验。下面是一些集成TTS引擎的步骤: 首先,在项目的build.gradle文件中添加TTS库的依赖项。可以使用Android的自带TTS引擎或第三方TTS引擎,如Google Text-to-Speech或Baidu TTS。 接下来,在AndroidManifest.xml文件中声明必要的权限,如网络访问权限(如果需要从远程服务器下载语音数据)和TTS服务权限。 然后,在应用代码中创建一个TTS对象并初始化。这样可以访问TTS引擎的功能。可以使用以下代码片段创建并初始化TTS对象: Tts tts = new Tts(getApplicationContext()); tts.initialize(); 现在,可以使用TTS对象将文本转换为语音。例如,可以使用以下代码将一个字符串转换为语音: String text = "你好,欢迎使用我们的应用!"; tts.speak(text); 还可以设置其他TTS参数,如语速、音调和音量。通过调整这些参数,可以根据需要定制语音输出。 最后,在应用的生命周期中,确保在不需要TTS功能时及时释放TTS资源,以免影响应用的性能和内存占用。可以使用以下代码释放TTS资源: tts.destroy(); 总之,要在Android应用中集成TTS引擎,首先需要添加库的依赖项,然后在AndroidManifest.xml中声明所需权限,创建TTS对象并初始化,最后使用TTS对象将文本转换为语音。调整TTS参数和及时释放TTS资源可以进一步提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值