我正在尝试使用wit.ai语音文本,这样我就可以将录制的音频从whatsapp转换为文本,问题是我不断收到错误。
wit.ai支持' audio / wav',' audio / mpeg3',' audio / ulaw'和' audio / raw'对于Content-Type标头。如果使用audio / raw,您还必须提供以下参数:encoding,bits,rate和endian
我从whatsapp获取的文件是.ogg。
由于他们不支持这种文件我尝试了所有可能的变体音频/原始但我一直收到同样的错误:
{
"error" : "Bad request",
"code" : "bad-request"
}
当我尝试不同的类型(例如音频/ wav)时,我会得到一个有意义的错误:
{
"error" : "Mismatch between the provided content-type and the bytes you sent.\nAre you sure it's a valid sound file?",
"code" : "content-type-mismatch"
}
获取我正在做的文件:
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
Log.w("myapp", "got the intent");
if (Intent.ACTION_SEND.equals(action) && type != null) {
audioUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
阅读我正在做的文件:
InputStream inputStream = getContentResolver().openInputStream(uri);
String type = getContentResolver().getType(uri);
Log.w("myapp", "type of file: " + type);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream fis = getContentResolver().openInputStream(uri);
try {
byte[] buf = new byte[1024];
int n;
while (-1 != (n = fis.read(buf)))
baos.write(buf, 0, n);
} catch (Exception e) {
e.printStackTrace();
}
Log.w("myapp", Integer.toString(baos.toByteArray().length));
return baos.toByteArray();
我做错了什么?