API VoiceBase和上传音频

时间:2017-07-20 02:14:08

标签: php jquery ajax curl speech-recognition

美好的一天 我打算以某种方式实现Voicebase我已经获得了上传测试的音频数据,下一步是通过表单上传音频,然后通过AJAX完成该过程。

<form id="formFile">
  <div class="form-group">
    <label for="vb-file">Agregar Archivo:</label>
    <input type="file" class="form-control" id="media" name="media">
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

ajax代码如下

$('#formFile').submit(function(e) {

    var access_token = 'eyJ0eXAiOiJKV1QiLCJh';

    var formData = new FormData(document.getElementById('formFile'));
    formData.append('dato', 'valor');

    $.ajax({
        url: 'https://apis.voicebase.com/v2-beta/media',
        type: 'POST',
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        beforeSend: function(xhr) {
             xhr.setRequestHeader( 'Authorization', 'Bearer ' + access_token );
        },
        success: function(result) {
            console.log(result);
        },
    });


    e.preventDefault();
});

我需要替换下面的代码并将其作为ajax,特别是语言的一部分,因为文件已经没有问题,如上所述。

curl https://apis.voicebase.com/v2-beta/media  \
    --form media=@recording.mp3 \
    --form 'configuration={
      "configuration": {
        "language": "es-LA",
        "keywords": {
          "semantic": false
        },
        "topics": {
          "semantic": false
        }
      }
    }' \
    --header "Authorization: Bearer ${TOKEN}"

1 个答案:

答案 0 :(得分:0)

此处的问题是您在请求中缺少配置JSON文件。在cURL请求中,有一个元素开始:&#39; configuration = {&#34; configuration ...&#34;&#39; v2-beta必须使用此配置才能了解如何处理要上载的媒体文件。 您可以创建一个config.json文件,并在标题中通过在formData中创建另一个名为&#39; configuration&#39;并附上configuration.json。

你想要这样的东西:

var formData = new FormData();
formData.append("media", "my_media_file.mp3");
formData.append("configuration", "configuration.json");

var settings = {
  "url": "https://apis.voicebase.com/v2-beta/media",
  "method": "POST",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer access_token"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": formData
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

您的configuration.json文件应包含:

configuration={
  "configuration": {
    "language": "es-LA",
    "keywords": {
      "semantic": false
    },
    "topics": {
      "semantic": false
    }
  }
}

顺便说一下:感谢您没有发布完整的访问令牌!访问令牌应该被视为用户名和密码的等价物 - 并且不应该被共享。