接口描述

1. 英语口语评测

1.1. 接口功能

对句子级别的音频文件进行口语评测,给出相应(包括音素/单词/句子)的发音和流利度评测分。

1.2. 请求方式

POST ‘http://dmai-en-assess-2.dm-ai.com/model.ai/

1.3. 请求参数说明

1.3.1. 请求头部(HTTP Header)

字段名

是否必选

数据类型

描述

dmid

String

联系DM技术支持获得

1.3.2. 请求体(Content-Type: JSON)

字段名

是否必选

数据类型

描述

wave_base64

String

测评音频文件(wav格式, 16k, 16bit, 单通道) base64编码字符串

text

String

测评音频对应的目标文本文件(除去不发音字符) utf8字符串

speaker_type

String

说话人类型选项,可选 “adult” 和 “child”

1.4. 正确请求示例

Header:
{
    "dmid": ""
    "Content-Type": "application/json"
}
-----------------------------------------------------------------------
Body:
{
    "audio": "data:audio/wav;base64,音频base64编码...",
    'text': "目标抄本",
    'speaker_type': "说话人类型",
}

1.5. 返回数据说明(Content-type: JSON)

字段名

是否必选

数据类型

说明

code

Int

code为0时, 业务正常, code不为0时, 业务出错

data

否(code为0时返回)

JSONObject

具体的返回数据(见data字段说明)

error

否(code不为0时返回)

String

当code不为0时, 输出出出错原因

data字段说明

字段名

数据类型

说明

duration

float

音频时长(s)

text

String

音频文件对应标注文本

refer_ipas

String

参考音标

speaker_type

String

说话人类型选项,可选 “adult” 和 “child”

random_reading

String

乱读检测

sentense_score

Dict

{‘pronounce’: 句子发音得分}

words

List

[单词, 单词得分]

ipas

List

[音素, 音素得分]

注:random_reading 字段有三种输出:
  • “True” # 代表随机读

  • “False” # 代表音频正常读

1.6. 正确返回示例

{
  "code":0,
  "data":{
    "duration": 2.092,
    "text":"listen i goes listen",
    "refer_ipas": 'ˈlɪsən aɪ goʊz ˈlɪsən',
    "speaker_type":"child",
    "random_reading":"False",
    "sentense_score":{'pronounce': 86, 'fluent': 91},
    "words":[['listen', 100], ['i', 100], ['goes', 75], ['listen', 100]],
    "ipas":[['l', 1.0], ["'ɪ", 1.0], ['s', 1.0], ['ə', 1.0], ['n', 1.0],\
            ["'aɪ", 1.0], ['g', 0.72], ["'oʊ", 0.71], ['z', 0.84], ['l', 1.0],\
            ["'ɪ", 1.0], ['s', 1.0], ['ə', 1.0], ['n', 1.0]],
    "reqid": 'd4d9f45a39e7475aa9ff621427979c19'
}    //正确返回数据对象
}

1.7. 错误返回示例

{
  "code":500,   //使用http statusCode
  "error":"错误信息描述"
}

1.8. 错误码

错误码

说明

修复方法

401

鉴权失败

联系DM技术支持获取dmid

1.9. 请求示例代码(Python)

import requests
import base64

service_address = 'http://dmai-en-assess-2.dm-ai.com/model.ai/'

dmid = "dmid-code"
class RequestTest(object):
    @classmethod
    def _request(cls, name, params=None):
        r = requests.post(service_address + name, json=params, headers={'dmid': dmid})
        return r.json()

    @classmethod
    def _assess(cls, base64wav, text, speaker_type):

        return cls._request('speech-assess', {'wave_base64': base64wav,
                                          'text': text,
                                          'speaker_type': speaker_type,
                                          })


if __name__ == '__main__':
    wav_file = "音频文件" # wav, 16khz, 16bit
    text_file = "目标抄本文件"
    speaker_type = "说话人类型" "adult/child"

    wav, sr = torchaudio.backend.sox_backend.load_wav(wav_file)
    wav_array = wav.cpu().detach().numpy()
    wav_array = np.array(wav_array, dtype=np.float16)
    base64wav = base64.b64encode(wav_array).decode()

    text = open(text_file, 'r').read().lower()

    print('result: ', RequestTest._assess(base64wav, text, speaker_type))