记忆学tts-生成resources.irf并读取文件

2018-08-30 07:04:11 -0400

注意标红的部分,这个文件直接写到:/data/data/xxxxxx/files/resource.irf  

3.3 初始化引擎

Tts.JniCreate("/data/data/xxxxxx/files/resource.irf"); Tts.JniSetParam(256, 1);  Tts.JniSetParam(1280, 20);

请注意标红,这个是软件的路径。也就是我需要把resource.irf文件写到这个路径下。当然也可以写到sd卡上或存储上。

3.4 使用

 不说了,自己封装吧!

 

备注:

这里要说的问题:

1.关于库的调用,由于封装的时候制定了包名和类名,所以在调用如下接口时

public static native int JniGetVersion();  public static native int JniCreate(String resFilename);   public static native int JniDestory();   public static native int JniStop();  public static native int JniSpeak(String text);    public static native int JniSetParam(int paramId,int value);  public static native int JniGetParam(int paramId);  public static native int JniIsPlaying();  public static native boolean JniIsCreated(); 

必须使用默认编译的包名和类名。如果想改类名,那么对不起,要重新编接口函数哦! 当时我大意了,浪费了好多时间。

 

2.关于.irf文件使用

目前接口是使用文件路径,所以要将他打包,然后解压到本地存储。

还可以直接修改接口,使其直接使用流的方式,我看了,好像是char型

为了以后版本库可以更新,我没有去判断文件是否存在,而是程序每次启动都去生成文件。我不知道怎么去判断是新的库,利用文件大小?

 

 

 

 

 

lxmhuendan关注 访问量 47万+ 原创 200 博主更多文章> 5条评论 写评论 hassd:楼主,哪里有源码,能不能给我发一份?(2015-01-29 #5楼)回复 sada09:楼主,有没有相关的讯飞语音的资料文档么?(2014-10-15 #4楼)回复 yang196212:大哥,小妹弄了半天都弄不好啊,能不能帮个忙发到我邮箱(3966.ik8@163.com)我试试啊,谢谢你啊~(2014-08-13 #3楼)回复 查看5条热评

头踢死它,就你,杀它射它怕啦吗?(老二, tts.jniSetParam(老二,无赖,呀) tts.jniSetParam(1280,20) (有啊,怕你,啊你)

原 android关于讯飞语音包的开发 lxmhuendan阅读数:47432012-07-25 这个是一个定制库的例子。

 

用法及注意事项:

  1. 将语音库Aisound.so,放在:

  libs\armeabi\libAisound.so。

注意:armeabi目录下的库,都要加上lib的前缀,为了方便调用。

 

  1. resource.irf 文件:

先将它打包到apk里,放在如下路径。

\res\raw\resource.irf

然后在程序运行的时候,读取并解压到软件目录,拿到路径及文件名。

3.使用

3.1 初始化库

System.loadLibrary("Aisound"); 

注意:这个("Aisound");指的就是那个libAisound.so。

 

3.2 生成resource.irf到本地存储

代码:

try {    InputStream stream = getResources().openRawResource(R.raw.resource);

   OutputStream out = openFileOutput("resource.irf",      Activity.MODE_PRIVATE); //   OutputStream out = openFileOutput("/sdcard/Resource.irf", Activity.MODE_PRIVATE);

byte buf[] = new byte[16384];    int numread = 0;    do {     numread = stream.read(buf);     if (numread <= 0) {      break;     } else {      out.write(buf, 0, numread);     }    } while (true);    out.close();

   return true;   } catch (IOException e) {    e.printStackTrace();    return false;   } 注意标红的部分,这个文件直接写到:/data/data/xxxxxx/files/resource.irf

3.3 初始化引擎

Tts.JniCreate("/data/data/xxxxxx/files/resource.irf"); Tts.JniSetParam(256, 1);  Tts.JniSetParam(1280, 20);

请注意标红,这个是软件的路径。也就是我需要把resource.irf文件写到这个路径下。当然也可以写到sd卡上或存储上。

3.4 使用

 不说了,自己封装吧!

备注: 这里要说的问题:

1.关于库的调用,由于封装的时候制定了包名和类名,所以在调用如下接口时

public static native int JniGetVersion();  public static native int JniCreate(String resFilename);   public static native int JniDestory();   public static native int JniStop();  public static native int JniSpeak(String text);    public static native int JniSetParam(int paramId,int value);  public static native int JniGetParam(int paramId);  public static native int JniIsPlaying();  public static native boolean JniIsCreated(); 

必须使用默认编译的包名和类名。如果想改类名,那么对不起,要重新编接口函数哦! 当时我大意了,浪费了好多时间。

 

2.关于.irf文件使用

目前接口是使用文件路径,所以要将他打包,然后解压到本地存储。

还可以直接修改接口,使其直接使用流的方式,我看了,好像是char型

为了以后版本库可以更新,我没有去判断文件是否存在,而是程序每次启动都去生成文件。我不知道怎么去判断是新的库,利用文件大小?

 

«Newer      Older»
Comment:
Name:

Back to home



Subscribe | Register | Login | N