我正在使用 OpenNLP 在 Android 中开发 TTS。我将每个配置文件放在 /assets/ 目录中。并从 AssetManager 获取 InputStream。但问题是当 InputStream 作为初始化 POSModel 的输入参数时,会引发 InvalidFormatException。
以下代码:
1.获取输入流。
public static InputStream getStream(String propertyName)
throws FileNotFoundException, MaryConfigurationException {
InputStream stream = null;
String propertyValue = getProperty(propertyName);
if (propertyValue == null) {
return null;
} else {
try {
stream = (InputStream)Globals.context.getResources().getAssets().open(propertyValue);
} catch (IOException e) {
e.printStackTrace();
}
}
return stream;
}
新的 Pos 标记器。
InputStream modelStream = (InputStream)MaryProperties.needStream(propertyPrefix+"model"); //here should return the InputStream of en-pos-maxent.bin
try {
tagger = new POSTaggerME(new POSModel(modelStream));
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这里得到 InvalidFormatException,
opennlp.tools.util.InvalidFormatException: The profile data stream has an invalid format
有人知道吗?