如何使用wit.ai与ogg文件

时间:2017-08-15 05:23:28

标签: android audio speech-to-text wit.ai

我正在尝试使用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();

我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用libvorbis-libogg-android将ogg转换为PCM并发送audio/raw个请求。