文档章节

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

腾讯云加社区
 腾讯云加社区
发布于 01/22 12:08
字数 1209
阅读 3
收藏 0

本文由云+社区发表

作者:腾讯智慧教育

img

概述

腾讯云智聆口语评测(英文版)(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

参数类型说明是否必填默认值
InitUrlString初始化接口地址
TransUrlString评分接口地址
WorkModeInteger上传方式:语音输入模式,0流式分片,1非流式一次性评估0
EvalModeInteger评估模式,0:词模式, 1:句子模式0
ScoreCoeffFloat评价苛刻指数,取值为1.0 - 4.0范围内的浮点数 用于平滑不同年龄段的分数,1.0为小年龄段,4.0为最高年龄段3.5
SoeAppIdString业务应用ID,与账号应用APPID无关,是用来方便客户管理服务的参数
StorageModeInteger音频存储模式,0:不存储,1:存储到公共对象存储, 输出结果为该会话最后一个分片TransmitOralProcess 返回结果 AudioUrl 字段。
successfunction创建成功回调
errorfunction创建失败回调

用户需自行替换后台接口地址,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);
}

此文已由腾讯云+社区在各渠道发布

获取更多新鲜技术干货,可以关注我们腾讯云技术社区-云加社区官方号及知乎机构号

© 著作权归作者所有

共有 人打赏支持
腾讯云加社区
粉丝 151
博文 223
码字总数 593043
作品 0
深圳
私信 提问
中国AI军团称霸全球口语翻译大赛!搜狗夺冠,讯飞阿里二三

雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI 中国AI,再次称雄全球机器翻译大赛。 在刚刚落幕的IWSLT(International Workshop on Spoken Language Translation)国际顶级口语机器翻译评测...

量子位
2018/11/01
0
0
还在纠结抑扬顿挫?让AI教你像native一样说英语

     编者按:你会用英语说绕口令吗?现在微软亚洲研究院推出的智能英语私教“微软小英”可以教你说英文绕口令啦!一直以来,“微软小英”口语训练里的实时打分和针对性反馈功能都获得了...

微软亚洲研究院
2018/08/28
0
0
人工智能+语音识别+教育 能擦出怎样的火花?

  【IT168 评论】在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧+”的概念正在深入到各行各业,提升企业效率,释放商...

it168网站
2017/10/16
0
0
语音识别CMUSphinx(0)简介

文章目录如下: 官方资源导航 功能简介 后续文章介绍 官方资源导航 入门 https://cmusphinx.github.io/wiki/tutorial/ 进阶 https://cmusphinx.github.io/wiki/ 问题搜索 https://sourceforg...

Seeker_zz
2018/08/04
0
0
人工智能交互集成在线语音合成能力的Tips

在线语音合成就是在联网的场景下将文字转换成声音,实现机器向人的声音交互。这个概念应该是比较好理解的,下面就结合Android在线合成的Demo讲解一下合成的流程以及大家经常遇到的一些问题。...

Jack_Fang
2016/06/03
206
0

没有更多内容

加载失败,请刷新页面

加载更多

matlab-自控原理 laplace、ilaplace 拉氏、拉氏逆变换

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   拉氏变换 code clearclc......

志成就
37分钟前
2
0
ABUSE建了个恶意网站数据库

数据库已经按不同类型标记了各种恶意网站,例如它们当前是否在线,恶意内容类型,潜在威胁信息等。安全软件开发人员和浏览器开发人员可以免费使用此数据库来帮助用户拦截可能存在威胁的恶意网...

linuxCool
今天
2
0
【SQL】- 高级用法

数值和字符范围比较: between select *from books where price>=23.5 and price<=35; -- 等价于select *from books where price between 23.5 and 35; -- between包含边界的比较>= / <=......

ZeroneLove
今天
7
0
RabbitMQ如何解决各种情况下丢数据的问题

1.生产者丢数据 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Jav...

编程SHA
今天
4
0
JVM平台上的响应式流(Reactive Streams)规范

Reactive Streams 响应式流是一个倡议,用来为具有非阻塞后压的异步流处理提供一个标准。大家努力的目标集中在运行时环境(JVM和JavaScript)和网络协议上。 注:响应式流其实就是一个规范,...

java菜分享
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部