Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者:wiilen,iOS 开发者。

来源公众号丨老司机技术周报(ID:LSJCoding)

Sessions: https://developer.apple.com/videos/play/wwdc2020/10060/

在 WWDC 19 时,苹果提供了 Siri Media Intent,让用户能通过 Siri 来操作音视频 App,进行搜索/播放节目。

基于上线以来的反馈,今年在该 Session 中,工程师为我们提供了一些数据的支撑,指明应该如何优化用 Siri 播放 App 的相关体验。

首先来看看该视频的一图简介:

高品质

语音助手取信于用户的界线比传统的用户界面还要高,所以可用性的要求也更高。如果要支持 Siri Media,更应该把它做好。

  1. 用户要播放时,应该直接播放

试想,如果有人用语音来播放你的 App,结果无事发生,他们可能就不会再用第二次了。因此有一个健壮的播放栈来确保播放,是让 App 支持 Siri 时首先要考虑的。

  1. 快速开始播放

去年苹果发现 SiriKit Media App 中出现的最多的问题是超时。对于像 CarPlay 这种场景下,重要的是快速开始播放。对于 CarPlay 而言,超时的阈值会更低,如果播放开始得不够快,你的 App 可能被杀掉。为了帮助解决这个问题,今年苹果为性能优化增加了新的选项,参考「Expand your SiriKit Media Intents More PlatForms」[1]

  1. 让 Siri 了解用户的偏好

方法是使用 Siri User Vocabulary API。对于 App 层面的特色词,可以使用 Siri Global Vocabulary API。后面有演示介绍如何添加。

  1. 支持更多的表达方式

允许用户通过不同的表达来与你的 App 交互,用户更可能在日常生活中使用该 App。毕竟 Siri 是个智能助理,而只有当和 Siri 的交流更符合自然语言的习惯时,它才能显得足够智能。所以只有当用户没有明说想要什么,而 Siri 做出了最佳猜测时,这才显得完美。

常见的用户表达语句

  1. 播放「App」

通常 mediaSearch 为空,或者只包含了音乐的类型。

超过一半的 App 都需要对用户的命令进行猜测。比如用户会说「播放 App」或者是「在 App 中播放音乐」。当用户没告诉你他想播放什么时,最重要的是能猜对,播放他想听的。满足了这个场景的需求,就可以服务到大量用户。根据 App 的情况来决定播放什么最适合用户。大概有 50% 的请求是这种类型的。

  1. 在「App」中播放「节目」

mediaSearch 中只含有标题,而没有其他信息。用户不会告诉你他们要播什么类型,只提供了一个词,可能是歌曲、专辑、艺人、主播等。要满足这样的需求,最好要对不同类型的节目都进行搜索。约占所有请求的 30%。

  1. 播放「艺人」的「节目」

mediaSearch 中带有艺人名字,合并其他信息。这是一种更精确的搜索,用户指明了他们想要听的内容。这种请求的占比下降到了 5%。

  1. 播放「列表」

mediaSearch 中包含了列表的名字,并且类型为 playlist。这种请求也只占了 5%。

以上几种语句就涵盖了 90% 的场景,但苹果也希望开发者能多支持一些用户语句。最后视频中还提到一点:用户用的越多,可能会使用一些越复杂的语句,这对 App 来说是好事,因为这意味着用户越喜欢通过 Siri 来使用该 App。

MediaSearch Demo

工程师演示了用户语句不同时,mediaSearch 返回的结果是怎样的。首先有个开发的小技巧:当进行测试时,可以直接在 Siri Intent Query 中输入想要让 Siri 识别到的句子。

  1. 播放「App」

语句:play controlAudio

可以看到 mediaSearch 此时是 nil,说明 Siri 没有识别到额外的参数。

多说了一个类型之后则略有变化。

语句:play music in controlAudio

可以看到 mediaSearchmediaType 被识别到了。

  1. 在「App」中播放「节目」

语句:Play Special Disaster Team in ControlAudio

可以看到 mediaName 也被识别到了,并且是要播放的内容标题。

  1. 在「App」中播放「艺人」的「节目」

语句:Play  Maybe Sometime by Special Disaster Team in ControlAudio

可以看到 mediaNameartistName 都被识别出来了,并且被放到了 mediaSearch 的相应字段中

  1. 在「App」播放「列表」

语句:Play my WWDC playlist in ControlAudio

注意:playlist 这个词是不能少的

可以看到 mediaType 被识别出来了,5 代表是播放列表,WWDC 作为 mediaName 也被放到对应的字段中。

Siri Media Vocabulary

Siri 的自然语言处理系统是一个机器学习系统,它会尝试根据用户语句来识别用户的意图,并执行操作。对应的模型也被训练过,用于识别音频相关的特征。因此你不需要自己去识别如音乐类型、媒体类型、排序方式等等,因为 Siri 都已经帮你做好了。

但有时 Siri 也会犯错,比如「70s punk classics」这个词,「70s」会被识别成年代,而「punk classics」会被识别成 mediaName,而不是整体被识别成播放列表类型,且整个词作为播放列表的名称。

有两种办法可以解决这个问题:一是使用 User vocabulary;二是使用 Global vocabulary。这两种 vocabulary 的应用场景略有不同。

  1. User vocabulary:更适用于单个用户,对于每个用户提供个性化的功能时,应该使用它。

如上图的代码中,创建了一个 NSOrderedSet 并把播放列表对应的词汇存到了该 set 中,最后再放到 vocabulary 中。需要注意的是越重要的需要排在更前面的位置,因为排序会影响 Siri 的处理结果。

  1. Global vocabulary:更适合放入适用于全部用户的词汇,这些词汇是静态的,放在 .plist 文件中,然后被打包到 App 中。只需要放入 App 独有的词,对于一些热门的歌曲或者播客类的词,Siri 都会不断更新,无需开发者自己再放入 App 中。

plist 文件的结构如下图所示。

上一个红框处的词代表了需要加入的词的类型,下一个红框处的词代表了要添加的词汇。被添加的词会被 Siri 识别成 mediaName 放到 mediaSearch 的相应位置。

vocabulary 有不同的类型,开发者可以选择自己的 App 支持的那些类型。

虽然 User vocabulary 和 Global vocabulary 中同类型词的名字略有区别,但最后识别出的词还是被放在 mediaSearch 中相同的位置。

音乐类的 App 可以识别出 PlaylistTile 和 MusicArtistName,有声书类的 App 可以识别出 AudiobookTitle 和 AudiobookAuthorName,广播类和播客类的 App 可以识别出 ShowTitle。注意:如果你的 App 没有设置为对应的类型,就算添加了对应类型的词汇 Siri 也不会识别出来。具体可以参考 WWDC 19 中的相关视频。

Siri Vocabulary Demo

同样对于「70s punk classic」这个例子,视频中演示了使用 vocabulary 前后,识别结果的不同。

当没有加入 vocabulary 时,结果如下:

可以看到「Punk」被单独识别成音乐的类型,而「70s」被识别成了年代。

加入设置 user vocabulary 的相关代码。在正式环境下,Run 之后,vocabulary 还需要一定时间来与 Siri 进行同步,所以可能不会马上就生效。

可以看到 vocabulary 已经生效了,现在上面的短语会被识别成播放列表,而列表名字也被完整的识别出来。

另一种方法是使用 Global vocabulary。添加 AppIntentVocabulary.plist 文件到 App 中,格式如下:

<<< 左右滑动见更多 >>>

再次运行之后,可以看到短语也别成功识别了。

Now Playing 支持

另一个常见的 Siri 使用场景是 Now Playing 相关的操作,用户使用 Now Playing 来控制播放相关的功能,如上一首下一首、播放暂停等。这是通过 MPRemoteCommandCenter 来实现的。只要你的 App 实现了对应的 command,iOS 会完成剩下的工作。具体可以参考样例代码「Becomming a Now playable app」。

对 Siri 来说,支持 Now Playing 就像在当前的支持上多加了一层语音控制层。用户的语音指令会被转换成对应的 command,然后交给 MPRemoteCommandCenter 来处理。最后,App 被唤醒,并执行对应的操作。

播放、暂停、上一首、下一首等语音指令都会被转换成对应的 command,唯一不同的点在于快进快退。用户现在可以指定快进与快退的时间。

除此之外,Siri 还支持一些其他的 command:

如果需要在开始播放时就设置播放的顺序,可以使用 INPlayMediaIntent 来实现。

如果用户询问正在播放的节目信息,在设置 MPNowPlayingInfoCenter 中的属性后,Siri 可以做出相应的回答。

主要是 title、artist、albumTitle 三种类型,举个例子,如果用户问「当前在播放的是什么歌曲?」Siri 就会从 MPMediaItemPropertyTitle 获取相关信息并告诉用户。

如果 App 不支持对应的 Command,有三种方式可以告知用户:

  1. 不实现对应的 Command,最省力,Siri 会告诉用户不支持这个指令。

  2. 设置 Command 的 enable 属性为 no。

  3. 返回 MPRemoteCommandHandlerStatusCommandFailed

告诉用户 App 有 Siri 相关功能

对于语音交互来说,一个难题是用户往往意识不到你提供了这样的功能。如果他们不知道,你所付出的努力很可能就被埋没了。

但如果用户知道了有这样的功能,功能的使用率甚至能达到以前的 10 倍。

因此,记得让用户知道你提供了语音交互的功能,用最适合你的 App 的方式呈现。

参考资料

[1]

「Expand your SiriKit Media Intents More PlatForms」: https://developer.apple.com/videos/play/wwdc2020/10061/

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:  

 肝了一晚上搞出来一个微信订阅号鉴黄机器人

 不允许程序员透露薪资!!!凭啥?

 程序员带娃有多“恐怖” ?!

 有个大神级女朋友是什么体验

在看点这里好文分享给更多人↓↓

SiriKit 新变化:高品质的 Siri 媒体交互相关推荐

  1. 2022中国广告行业研究报告:投放方式呈现九大新变化

    文:任泽平团队 导读 广告行业迎来大变局,传统媒体势弱,移动互联网新媒体快速成为主流,背后的根本逻辑得用户关注者得天下.近年,随着消费者心理精神需求升级.科技快速进步以及市场环境迅速变化,我国的广告行 ...

  2. 【今晚9点】:对话刘连响——web流媒体开发新变化

    点击上方"LiveVideoStack"关注我们 从QUIC,HTTP3,WebTransport,到WebCodec,Chrome乃至整个浏览器市场进一步加速标准统一,WebRT ...

  3. HTML5对比HTML4带来的新变化

    HTML5入门 HTML5是HTML的最新版本,目标是更好地开发网络应用程序. HTML5比HTML4拥有更简洁的语法并且提供了更多新的特性. 本文将对HTML5做一个大体的介绍. HTML5能做什么 ...

  4. Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化

    原文地址: Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化 一直以来,go get 用于下载并安装 Go 包.命令等,而 go install 在 module ...

  5. Swagger3.0新版带来的新变化

    在社区的推动下,Springfox3.0 去年 7 月份就发布了,最近终于得空和小伙伴们聊一聊新版本的新变化.这次的版本升级估计小伙伴们都翘首以待好久了,毕竟上一次发版已经是两年前的事情了. 在社区的 ...

  6. 回顾2020,我国无人机经历了四大新变化

    2020年是充满曲折的一年,对于无人机发展来说,则是求新求变的一年.在这一年里,我国无人机发展在多重机遇与挑战的夹击之下,历经了环境.技术.政策与市场的四方面变化.这些变化有好有坏,但都共同助推了我国 ...

  7. SAP S/4 HANA新变化-FI数据模型

    SAP S/4 HANA新变化-FI数据模型 http://mp.weixin.qq.com/s?__biz=MzAwMjgyMTA4MQ==&mid=2652153162&idx=1 ...

  8. SAP S/4 HANA新变化-信用管理

    SAP S/4 HANA新变化-信用管理 http://mp.weixin.qq.com/s?__biz=MzAwMjgyMTA4MQ==&mid=2652153153&idx=1&a ...

  9. SAP S/4 HANA新变化-主数据:物料主数据

    SAP S/4 HANA新变化-主数据:物料主数据 http://mp.weixin.qq.com/s?__biz=MzAwMjgyMTA4MQ==&mid=2652153151&id ...

最新文章

  1. Java学习笔记20
  2. cocos2dx 学习代码记录
  3. 算法测试—机器学习算法评价指标
  4. 确保HIPAA符合远程医疗视频流的2种方法
  5. wait和notify的理解与使用
  6. 从 2,000 到 25,000 工程师,微软开源如何制霸 GitHub?
  7. 2018年5大微服务发展趋势
  8. GS3D An Efficient 3D Object Detection Framework for Autonomous Driving算法解析
  9. ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
  10. 刷题笔记(一)《王道计算机考研机试指南2》
  11. 多传感器融合方法综述
  12. 小米路由器显示DNS服务器设置错误,小米路由器dns异常怎么修复
  13. C语言 编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。
  14. 用计算机进行几何证明属于,湖南省计算机二级精选选择题1
  15. 冰点还原精灵如何破载?
  16. git clone报错Could not resolve proxy : proxy-szn
  17. js小学生图区_js读取本地图片并显示
  18. 计算机音乐我的天空,南征北战NZBZ《我的天空》[FLAC/MP3-320k]
  19. 关于内部用户通过easy-ip访问外网
  20. 如果你没读懂《骇客帝国》

热门文章

  1. Symantec、Thawte和Digicert之间的关系
  2. c语言程序设计小球弹跳,c语言小游戏程序之弹跳小球的实现代码
  3. 位图文件解析-位图(bmp)、图标(ico)与光标(cur)
  4. 腾讯自选股~qinglong项目详解
  5. 天体物理学家用PS3代替超级电脑
  6. 浅析@MapperScan原理
  7. spotlight怎么监控linux主机,详解 Spotlight on Unix 监控Linux服务器
  8. linux系统怎么查看raid卡信息,LINUX下查SCSI卡、RAID卡信息的命令
  9. 学到了一个新东西叫塞瓦维斯特定理
  10. 股票最新最全的短线操作方法