50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

使用 Amazon Polly 提供实时家居监控警报

  • 2019-10-11
  • 本文字数:1573 字

    阅读完需:约 5 分钟

使用 Amazon Polly 提供实时家居监控警报

这是 Y-cam Solution 高级开发人员 Siva K. Syamala 撰写的客座博客文章。用她自己的话说,“Y-cam 是高质量安保视频解决方案提供商,我们的愿景是让智能家居安防系统变得简单,方便所有人使用。” | 原文链接


家居安防是家庭自动化和物联网的重要组成部分。Y-cam Solutions Limited 在 Amazon 的大力支持下,提供了一个智能安防系统,该系统可通过智能手机在世界任何地方进行监视和控制。为了改进警报、通知和系统控制方式,Y-cam 使用 Amazon Polly 提供一流的 AI 服务。利用该服务,用户可通过语音与安防系统进行交互。

我们的服务的工作方式

当触发报警时,我们通过 Twilio 以语音电话的方式通知客户。在建立呼叫后,Twilio 将逐步执行 TwiML 指令,并使用从 Amazon Polly 检索的合成语音开始向客户传送信息。电话接听方通过按手机键盘上的按钮 (DTMF 代码) 来做出回应。根据具体的 DTMF 代码,我们的服务会采取指定的操作,并返回从 Amazon Polly 检索的合成语音所对应的 TwiML 指令。为了让用户听起来像一个真实的对话,Amazon Polly 必须快速做出回应。延迟和等待会让人不满,并更有可能会导致接听方挂断电话。


下面是触发警报时向客户拨打的电话的示例音频剪辑。


##架构


呼叫 Amazon Polly

以下 Java 代码说明了从 Amazon Polly 请求合成语音并将其存储在 S3 存储桶中的过程。


public String convertTextToSpeech(final String text, final String polyVoiceId) {  log.info("Converting " + text + " to speech");  // Create speech synthesis request.  SynthesizeSpeechRequest synthesizeSpeechRequest = new SynthesizeSpeechRequest()  .withText(text)  .withVoiceId(polyVoiceId)  .withOutputFormat(OutputFormat.Mp3);
// Get the synthesized speech audio stream. SynthesizeSpeechResult synthesizeSpeechResult = awsPollyClient.synthesizeSpeech(synthesizeSpeechRequest); // store audio stream of Polly to S3 as an MP3 file byte[] bytes = null; try { bytes = IOUtils.toByteArray(synthesizeSpeechResult.getAudioStream()); } catch (IOException e) { log.error("Could not get bytes from the audio stream " + e.getMessage()); } ObjectMetadata omd = new ObjectMetadata(); omd.setContentType(synthesizeSpeechResult.getContentType()); omd.setContentLength(bytes.length); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); String fileName = getRandomString(); final PutObjectRequest s3Put = new PutObjectRequest(pollySpeechBucket, fileName, byteArrayInputStream, omd).withCannedAcl(CannedAccessControlList.PublicRead);
amazonS3Client.putObject(s3Put);
return S3URL;}
复制代码

为什么选择 Amazon Polly?

在使用 Amazon Polly 之前,我们使用过另一家 TTS 提供商,该提供商提供的语音不真实,并且存在可扩展性问题。很显然,机器人的声音不会带来良好的客户体验。我们希望声音更加自然,更加接近人类声音。Amazon Polly 为我们提供了一个非常简单、灵活、自然和可扩展的文本到语音的解决方案,而且成本非常低。另外,Amazon Polly 还支持不同的语音和语言。Amazon Polly 可以在数毫秒内处理数据,这样我们的客户不需要长时间等待回应。

未来的发展

我们计划在未来使用 Amazon Lex,以便客户可以向自己的家居安防系统发出控制命令,而不是输入 DTML 代码。Amazon Lex 提供了自动语音识别 (ASR) 的深度学习功能,可将语音转换为文本;并且提供了自然语言理解 (NLU) 来识别文本的意思。我们的目标是为用户提供全语音用户接口。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/using-amazon-polly-to-provide-real-time-home-monitoring-alerts/


2019-10-11 11:19813
用户头像

发布了 1942 篇内容, 共 163.6 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

自定义View

android 程序员 移动开发

自定义View(一) Android 可计数EditText实现

android 程序员 移动开发

计算机编码简析(1)

android 程序员 移动开发

nginx 缓存大小的含义

liuzhen007

11月日更

Linux基金会宣布成立NextArch Foundation基金会 第四范式成为首批共建单位

第四范式开发者社区

详解BAT面试必问之ThreadLocal(源码+内存)

android 程序员 移动开发

裸辞两个月从Android转战web前端的求职之路

android 程序员 移动开发

要想工资涨得快,还是得跳槽?一个三本Android程序猿外包到阿里的逆袭之路

android 程序员 移动开发

论一个APP从启动到主页面显示经历的过程?

android 程序员 移动开发

详解-RxJava2-的线程切换原理(1)

android 程序员 移动开发

计算机编码简析

android 程序员 移动开发

详解-RxJava2-的线程切换原理

android 程序员 移动开发

详解Gradle自动实现Android组件化

android 程序员 移动开发

详解二叉搜索树(BST)的Java实现和五种遍历方式

android 程序员 移动开发

谷歌:使用-Android-Studio-Profiler-工具解析应用的内存和-CPU-使用数据

android 程序员 移动开发

资深架构师和你谈谈 Kotlin 的泛型

android 程序员 移动开发

模块三作业

bob

「架构实战营」

记一次腾讯社招Android面试(已拿到offer入职)

android 程序员 移动开发

设计模式学习--观察者模式(Observer Pattern)

android 程序员 移动开发

详解HTTP协议

android 程序员 移动开发

谷歌-在-CI-中使用-Benchmark-进行回归分析

android 程序员 移动开发

自定义ViewGroup实现微信朋友圈九宫格图片控件

android 程序员 移动开发

致刚入行的小白,或者工作一到三年的Android程序员,如何规避“内卷

android 程序员 移动开发

蒂花之秀---大神用漫画讲解字符串匹配算法,让你噩梦变美梦

android 程序员 移动开发

认识ClassLoader

android 程序员 移动开发

设计模式(行为型)之模板方法模式(Template Method Pattern)

android 程序员 移动开发

解决Fragment多层嵌套时onActivityResult无法正确回调的问题

android 程序员 移动开发

记联想公司的一次Android面试

android 程序员 移动开发

设计模式之行为型模式

android 程序员 移动开发

试用期没通过的原因,居然是被发现了上班偷偷干这事

android 程序员 移动开发

Java-第一周的第3题

Geek_ywh40v

使用 Amazon Polly 提供实时家居监控警报_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章