以语音评测的PC端demo代码为例,讲解口语评测如何实现

概述

腾讯云智聆口语评测(英文版)(Smart Oral Evaluation-English,SOE-E)是腾讯云推出的语音评测产品,是基于英语口语类教育培训场景和腾讯云的语音处理技术,应用特征提取、声学模型和语音识别算法,为儿童和成人提供高准确度的英语口语发音评测。腾讯云智聆口语评测(英文版)支持单词和句子模式的评测,多维度反馈口语表现,可广泛应用于英语口语类教学应用中。

本 SDK 为智聆口语测评(英文版)的 Web 版本,封装了对智聆口语测评(英文版)网络 API 的调用及本地音频文件处理,并提供简单的录音功能,使用者可以专注于从业务切入,方便简洁地进行二次开发。

本文档只对 Web SDK 进行描述,详细的网络 API 说明请参见 API 文档

使用说明

SDK引入

只需要在您的 Web 页面中添加如下代码即可:

html
<script src="https://imgcache.qq.com/open/qcloud/soe/TencentSOE-0.0.1.js"></script>

创建对象

new TencentSOE

参数

类型

说明

是否必填

默认值

InitUrl

String

初始化接口地址

TransUrl

String

评分接口地址

WorkMode

Integer

上传方式:语音输入模式,0流式分片,1非流式一次性评估

0

EvalMode

Integer

评估模式,0:词模式, 1:句子模式

0

ScoreCoeff

Float

评价苛刻指数,取值为1.0 - 4.0范围内的浮点数 用于平滑不同年龄段的分数,1.0为小年龄段,4.0为最高年龄段

3.5

SoeAppId

String

业务应用ID,与账号应用APPID无关,是用来方便客户管理服务的参数

StorageMode

Integer

音频存储模式,0:不存储,1:存储到公共对象存储, 输出结果为该会话最后一个分片TransmitOralProcess 返回结果 AudioUrl 字段。

success

function

创建成功回调

error

function

创建失败回调

用户需自行替换后台接口地址,nodejs版本可参考此SDKlet recorder = new TencentSOE({ InitUrl: 'http://127.0.0.1:3000/cgi/init', TransUrl: 'http://127.0.0.1:3000/cgi/trans', success() { // TODO }, error(err) { console.log(err); } });

方法

初始化

/**
 * 调用初始化接口,设置测评文本
 * @param {
 *   success: function() {} // 成功回调
 *   error: function() {} // 失败回调
 * }
 */
recorder.init({
  RefText: 'about',
  success() {
    recorder.start();
  },
  error(err) {
    console.log(err);
  }
});

开始录音

/**
 * 开始录音
 * @param {
 *   error: function() {} // 录音过程出现错误时回调,选填
 * }
 */
recorder.start({
  error(err) {
    console.log(err);
  }
});

停止录音

/**
 * 停止录音,返回测评结果
 * @param {
 *   success: function() {} // 成功回调
 *   error: function() {} // 失败回调
 * }
 */
recorder.stop({
  success(res) {
    // 获取blob对象,创建audio进行回放
    let audio = document.createElement('audio');
    audio.setAttribute('controls', '');
    let blobUrl = URL.createObjectURL(res.blob);
    document.body.appendChild(audio);
   	
    // 输出测评得分
    console.log(res.PronAccuracy)
  },
  error(err) {
    console.log(err);
  }
});

重置参数

/**
 * 重置参数,用于修改请求参数
 * @param {Object} params
 */
recorder.reset({
  WorkMode: 1
});

在线Demo

https://soe.cloud.tencent.com

错误码

code

错误说明

10000

参数格式错误

10001

当前浏览器不支持录音功能

10002

未开启麦克风访问权限

10003

未提供发音评估初始化接口

10004

未提供发音数据传输接口接口

10005

未提供测评文本

10020

接口错误

Tip: 非本地环境必须使用https协议

极简示例

创建html, 引入TencentSOE SDK,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="//imgcache.qq.com/open/qcloud/soe/TencentSOE-0.0.1.js"></script>
</head>
<body>
  <input type="text" value="about" id="word">
  <button id="start">开始录音</button>
  <button id="stop">结束录音</button>
   <!-- 显示当前状态 -->
  <span id="status"></span>
  <!-- 显示测评结果 -->
  <div id="result"></div>
</body>
</html>

编写录音代码:开始录音、结束录音、展示结果,代码如下

let recorder = new TencentSOE({
  InitUrl: 'http://127.0.0.1:3000/cgi/init',
  TransUrl: 'http://127.0.0.1:3000/cgi/trans',
  success(res) {
    console.log('创建成功');
  },
  error(err) {
    console.log('创建失败');
  },
});
startBtn.onclick = function () {
  result.innerHTML = '';
  status.textContent = '初始化中';
  recorder.init({
    RefText: word.value,
    success(res) {
      status.textContent = '录音转码中...';
      recorder.start();
    },
    error(err) {
      console.log('err', err);
    }
  });
};
stopBtn.onclick = function () {
  recorder.stop({
    success(res) {
      status.textContent = '已结束';
      createAudioLinkFromBlob(res, 'wav');
    },
    error(err) {
      console.log('err', err);
    }
  });
};

// 创建音频、下载链接
function createAudioLinkFromBlob(res, type) {
  let audio = document.createElement('audio');
  let alink = document.createElement('a');
  let score = document.createElement('span');
  let blobUrl = URL.createObjectURL(res.blob);
  alink.download = 'demo.' + type;
  alink.textContent = 'demo.' + type;
  alink.href = blobUrl;
  audio.src = blobUrl;
  audio.setAttribute('controls', '');
  score.textContent = '分数:' + res.PronAccuracy;

  let container = document.createElement('div');
  container.appendChild(audio);
  container.appendChild(alink);
  container.appendChild(score);
  result.appendChild(container);
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

干货!如何正确使用Git Flow

我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用。

1524
来自专栏腾讯安全应急响应中心

短网址安全浅谈

何谓短网址(Short URL)?顾名思义,就是形式上比较短的网址,当前主要是借助短网址来替代原先冗长的网址,方便传输和分享。短网址服务也就是将长网址转换为短网...

3870
来自专栏玉树芝兰

如何用 Python 脚本批量下载 Google 图像?

(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。)

1632
来自专栏沈唁志

如何简单计算PHP网站是否已经最高负载

2355
来自专栏大数据

内存计算网格解释

Dmitriy Setrakyan在最近为In-Memory数据网格 (IMDG)提供了一个很好的解释 - 现在我尝试为In-Memory Compute Gr...

3318
来自专栏FreeBuf

使用Python以及C++简单绕过反爬虫机制

0x00 某些网站有反爬虫的机制 对于刚学习了几天python的我,对爬虫颇有兴趣,但是某些“想要的”网站上具有反爬虫机制,如果说使用延迟或者代理,这样的效率并...

25110
来自专栏Java技术栈

2017一季度JAVA面试题锦集

1、如何实现分布式事务,你们公司是怎么解决的? 2、HashMap数据结构及实现原理,其链表是用来解决什么问题的 3、可以自定义java.lang.String...

4225
来自专栏FreeBuf

Skype-Type:一款通过声音窃取键盘记录的Keylogger工具

Skype-Type(简称S&T)是一款功能强大的键盘声音窃听器,这款新颖的安全研究工具将允许他人执行键盘声音窃听攻击。简而言之,S&T可以通过窃听目标用户的键...

3784
来自专栏FreeBuf

藏匿在邮件里的“坏小子”

不知从什么时候开始,我的垃圾邮件开始暴增,而且主题千奇百怪,有“再也不用去澳门赌博”、“免保人、免抵押”…等推广主题;有“南北方压岁钱差距有多大?”、“爱过才知...

1528
来自专栏PPV课数据科学社区

数据挖掘系列(5)使用mahout做海量数据关联规则挖掘

上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,ma...

3084

扫码关注云+社区

领取腾讯云代金券