【问题标题】:How to work with the Microsoft Cognitive Services - Speaker Recognition API如何使用 Microsoft 认知服务 - 说话人识别 API
【发布时间】:2017-06-08 06:33:49
【问题描述】:

我对 Microsoft 认知服务完全陌生。我想建立一个完全语音控制的网络项目。对于语音控制,我使用的是 arytom.js,这是一个非常简单且非常适合我使用的 API。它适用于我,适用于 TTS 和 STT。我现在要做的是,我想识别谁在说话并将其与数据库进行比较。我刚刚找到了微软开发的说话人识别 API。我已经获得了 API 密钥,现在我想创建注册并将录制的语音样本与存储在 Microsoft 服务器上的语音进行比较。 官方API的代码示例如下:

 <!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
            "shortAudio": "{boolean}",
        };

        $.ajax({
            url: "https://westus.api.cognitive.microsoft.com/spid/v1.0/identify?identificationProfileIds={identificationProfileIds}&" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Content-Type","application/octet-stream");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "POST",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>

根据微软的“shortAudio”:如果您希望使用任意数量的语音时间开始识别,您应该包含“shortAudio”参数。它指示服务放弃进行识别所需的建议的 30 秒音频。这样做时,您可以发送时长为 1 秒但不超过 5 分钟的音频文件。

我有一个“Ocp-Apim-Subscription-Key”,我必须将其放入标头中,但是如何将 .wav 文件发送到他们的服务器。 有谁知道,如何开始使用这个 API。不幸的是,微软没有关于它的真正文档。

更新:现在我知道,我必须将 .wav 文件转换为二进制文件。有人有示例代码,如何使用此API进行调用?

提前谢谢你!

【问题讨论】:

  • 没有人能解决这个问题吗?
  • 你找到答案了吗?我遇到了类似的问题

标签: jquery voice-recognition speaker


【解决方案1】:

二进制数据需要是特定格式的WAV文件:

  • 容器:WAV
  • 编码:PCM
  • 速率:16K
  • 示例格式:16 位
  • 频道:单声道

您可以在此处查看工作示例网页 - 我使用了经过更改的 recorderjs 副本(通过对说话人识别 API 示例页面进行逆向工程更改)来获得正确的比特率和采样率 WAV:

https://rposbo.github.io/speaker-recognition-api/

【讨论】:

  • 如何设置数据:javascript中的“{body}”标签
  • “{body}”是编码的音频对象。如果您使用的是var request = new XMLHttpRequest();,那么当您调用request.send(yourEncodedAudioObject) 时将设置正文。
猜你喜欢
  • 2020-06-16
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2021-06-19
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多