一、语言学习
将语言教材和词典中的英文转换为语音播放,可以为学习者提供标准的发音示范,帮助他们更好地学习语音。这种技术适用于语音学习软件、外语学习应用等场景。
二、书籍阅读
借助图文点读技术,儿童绘本、漫画、地图导览等可迅速将图片中的内容转换为语音,从而提升信息获取的趣味性和互动性,让用户更便捷地阅读和获取信息。
三、准备工作
·创建数据万象存储桶,详情请参见 存储桶操作。
·已设置对应的 跨域规则。
·在存储桶详情 > 智能语音页面,开启智能语音功能。
·上传待处理的图片 到存储桶中。
四、步骤1: 初始化 COS SDK 并配置相关信息
// 密钥请在访问管理控制台获取。https://console.cloud.tencent.com/cam/capiconst cos = new COS({ SecretId: 'AKID*******', SecretKey: '**********',});// 存储桶配置请在 cos 控制台获取。https://console.cloud.tencent.com/cos/bucket// 格式参考:Bucket: 'abc-1250000000', Region: 'ap-guangzhou'const bucketConf = { Bucket: 'test-1250000000', Region: 'ap-guangzhou'};
注意:说明:
五、步骤2:使用 OCR 技术识别图片内容
数据万象通用文字识别功能(OCR)基于行业前沿的深度学习技术,将图片上的文字内容,智能识别为可编辑的文本。通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。对于存储在 test-1250000000存储桶中的图片 test.png,OCR 识别代码如下。
// 使用 OCR 功能提取图片中的文字,接口可参考 https://cloud.tencent.com/document/product/460/63227cos.request({ …bucketConf, Key: 'test.png', // 待识别的图片 Query: { 'ci-process': 'OCR', }}, (ocrErr, ocrData) => { if (ocrErr) { console.log(JSON.stringify(ocrErr)); return alert('识别图片失败'); } const list = ocrData?.Response?.TextDetections?.map(text => text.DetectedText || ""); const ocrResult = list?.join('\\n') || ""; console.log(ocrResult);})
注意:说明:
注意:OCR 计费规则请参见 内容识别费用 – 通用文字识别。
识别效果如下:
六、步骤3:创建语音合成任务
数据万象语音合成技术通过先进的深度学习技术,将文本转换成自然流畅的语音。支持多种音色,并提供调节语速、语调、音量等功能。
·如果识别的文本内容 ocrResult 长度不超过300字符,可以直接创建语音合成任务,同步获取合成的音频。
·如果识别的文本内容 ocrResult 长度超过300字符,需要先将识别的内容上传到 COS 中,再创建语音合成任务。
通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。
创建语音合成任务,参数详情参见 提交任务接口。
// 上传ocrResult到cos存储桶,参考接口: https://cloud.tencent.com/document/product/436/7749// 注意:为了避免上传出现跨域错误,需要设置跨域访问规则,简单调试可将来源Origin设置为*,参考 https://cloud.tencent.com/document/product/436/13318cos.putObject({ …bucketConf, Key: key, // 目标文件名 Body: file,}, (err, data) => { if (err) { return console.log(JSON.stringify(OcrUploadErr)); } const txtUrl = `https://${bucketConf.Bucket}.cos.${bucketConf.Region}.myqcloud.com/content.txt`; // 创建语音合成任务,参考接口:https://cloud.tencent.com/document/product/460/84797 cos.request({ …bucketConf, Method: 'POST', Url: `https://${bucketConf.Bucket}.ci.${bucketConf.Region}.myqcloud.com/jobs`, Key: '/jobs', /** 固定值,必须 */ ContentType: 'application/xml', /** 固定值,必须 */ Body: COS.util.json2xml({ Request: { Tag: 'Tts', // 语音合成任务 Operation: { TtsConfig: { InputType: 'Url', // 支持输入文这篇件 Url 或 utf8-字符,utf8-字符长度不超过300,Url文件大小不超过10000个字符 Input: txtUrl // 将步骤2中识别到的文本作为输入 }, TtsTpl: { Mode: "Asyc", // 支持同步和异步模式,如果文本内容长,建议选择异步模式 Codec: "mp3", // 生成 mp3音频,支持 wav、mp3和 pcm 格式 VoiceType: "ruxue" // 支持多种音色选择 }, Output: { Bucket: bucketConf.Bucket, Region: bucketConf.Region, Object: 'result.mp3' // 输出音频的地址 } } } }) }, (err, data) => { if (err || !data?.Response?.JobsDetail?.JobId) { return console.log(JSON.stringify(err)); } // 如果任务提交成功,记录当前的任务id const jobId = data?.Response?.JobsDetail?.JobId || ""; })})
注意:说明:
七、步骤4:获取合成的音频
通过 JobId 查询任务执行结果,详情请参见 查询任务接口。
可定时查询任务的状态,当返回的 State 为 Success 时代表音频合成成功,音频地址为:https://${Operation.Output.Bucket}.cos.${Operation.Output.Region}.myqcloud.com/${Operation.Output.Object}。
let TaskInterval = null;/*** 轮询查询任务的执行情况,参考接口: https://cloud.tencent.com/document/product/460/84765* 也可以通过回调的方式获取任务执行结果:https://cloud.tencent.com/document/product/460/84958**/function queryTask(jobId, callback) { TaskInterval && clearInterval(TaskInterval); TaskInterval = setInterval(() => { cos.request({ …bucketConf, Method: 'GET', Url: `https://${bucketConf.Bucket}.ci.${bucketConf.Region}.myqcloud.com/jobs/${jobId}`, Key: `/jobs/${jobId}` }, (err, data) => { if(err) { console.log(JSON.stringify(err)); return callback && callback(err); } if (data?.Response?.JobsDetail?.State === 'Success') { clearInterval(TaskInterval); callback && callback(data); } }) }, 3000)}
注意:说明:
注意:推荐使用 API Explorer 调试。
合成的音频效果如下:
八、费用相关
·OCR 识别费用
·语音合成费用
·对象存储相关费用
九、Demo 体验
具体代码可参考 cos-demo,你也可使用腾讯云对象存储控制台,在 智能工具箱 栏目中体验语音合成实际效果。