为什么 IOS 不给输入法 APP 直接录音语音转文字的权限? 需要跳转

35 天前
 stinkytofux

苹果自己的那个按钮可以直接录音转文字这个没毛病, 就是识别不准确, 不好用.

但是很多第三方 APP 是可以不用跳转的, 例如 豆包, 微信输入框中的按钮.

而最需要这个功能的第三方输入法都需要跳转才能录音, 如果为了安全都要跳转还可以理解, 为什么厚此薄彼?

1949 次点击
所在节点    iPhone
17 条回复
MacsedProtoss
35 天前
很简单,在 app 内录音那是 app 的能力,前台资源可以都给他,而键盘主 app 和键盘 extension 其实是两个进程,如果允许键盘做太多的事情,那么键盘就可以吃很多资源了,肯定是不符合预期的
CNN
35 天前
@MacsedProtoss #1 微信可以直接调用录音,为何符合?
MacsedProtoss
35 天前
@CNN 他是主 app ,有完整权限很正常啊

键盘那是 extension ,凭什么给你一堆莫名其妙的权限?
wangpao
35 天前
输入法的权限限制很多。
苹果自带的调用的是手机本地的模型。
微信里面的语音输入,并不属于“输入法”,而是微信功能的一部分,所以限制也没有输入法那么多。
CNN
35 天前
@MacsedProtoss #3 第一次听说权限分“主次”
beimenjun
35 天前
苹果不愿意同时给予一个已经获得了文字输入权限的 extension 再开一个语音输入权限。

对于苹果来说,每次一想到给了之后,那天晚上就会梦到 extension 在后台搞小动作的噩梦。多少苹果有点心理方面的大病。

既给权限又保障安全在技术上是完全可行的,比如录音必须走官方控件,然后对应活动周期严格控制。对于苹果来说,反正键盘 extension 还有一堆 bug ,哪有空开发啥新功能,“又不是不能用”,过几年想起来再做一下,又是一个 highlight 。
wangpao
35 天前
@CNN

iOS 第三方键盘,能打开主界面的设置是主 App ,输入法本身属于 keyboard extension ,运行在独立的沙盒中,和主 App 隔离,不能随意访问系统 API 或其他应用的数据。

几乎没有后台能力,内存和 CPU 使用受到严格限制,默认也不允许联网,不能访问任何敏感数据,甚至和主 App 的通讯也受到严格限制(只能通过 App Group 共享少量数据(如词库、设置))。所以每次既需要麦克风,又需要联网的时候,就要打开主 App 来获得语音输入和识别的能力,然后靠主 App 的后台和权限做识别,然后传递给 keyboard extension 。
我做过一个自己用的输入法,用来自定义每个按键对应的快捷内容,所以有所了解。
moooookey
35 天前
傲慢
MacsedProtoss
35 天前
@CNN 说明你没写过代码
限制权限是个好事,
@beimenjun 走官方控件有啥用?现在录音使用麦克风本来就会有提示,没啥安全上的区别
问题在于一个 extension 要干这么重的活,接收音频流,走网络请求传后台再接收回来的文本,想想都知道性能要求不低,一个 extension 整这么一出怕不是会导致经常触发 oom
gigishy
35 天前
op 显然没有认真用苹果内置输入法的麦克风图标,因为懒也因为不想手指炎症,我是认真用的,一方面有经验了,口述时比如标点等输入有些许小技巧,更重要的方面时,稍微听多一点加上实时修正一段小时间,官方语音输入飞快且精准率几乎 100%。
第二个问题:那些 app 比如微信申请的是麦克风语音权限,也并不是输入法的“语音转文字”权限,两个权限不要混淆。
第三个问题:苹果对于第三方输入法的权限管理,我极其赞成!任何一个平台,包括 windows ,输入法权限不管理好,程序不编写好,都是突破系统的好入口。
xiangyuecn
35 天前
这都能扯上性能,4000 块的连 400 块的都比不过不成
beimenjun
34 天前
@MacsedProtoss 内存问题在现在 8G 时代不该成为瓶颈,功能设计是给人用的,不是让设备在用户手上养老的。

用户如果愿意花更大的内存更多的资源换更好的体验,厂商就该尽可能满足,语音输入就是这么基础的需求,退一万步,系统输入法就能实现语音输入,为什么不能让第三方键盘用一样的语音输入识别流程。

这件事上显然苹果并没有尽全力,甚至连尽 1/100 的力都没有,在这种情况下,再谈什么 OOM 和实现之类的细节,我感觉意义很低。
moudy
34 天前
@beimenjun 搞成搜狗云控流氓软件就都开心了
solecc
34 天前
苹果内置语言输入法有点不准
MacsedProtoss
34 天前
@beimenjun 手机不是电脑,并不是你要多少就给多少的,提升的内存容量就算不跑 AI 也依然是不会给到单个 app 的内存使用上限,而是给到多个 app 的保活。
同时目前主流 app 大致是在 ios14-15 的支持上,支持这个系统的机器应该是追溯到 6s/7 ,还得要很多年才可以都是大内存的机器。
另外其实很多时候应用确实是不需要那么多内存,因为苹果对于这些场景基本都是提供了跨进程的方案,例如 webview 以及一些相机相关的能力,消耗的内存实际上不计入 app ,是系统进程,所以其实现在的内存上限也还算合理。包括这个苹果的语音识别能力也是提供了 API 给到 app 的,问题是 app 就是喜欢把你的语音录下来上传给后台来做识别,而不是在本机上通过系统 API 来实现
最后是键盘,他其实是区分主 app 和 extension ,默认情况下其实键盘 extension 都不能联网,更别提什么语音输入了,而且使用第三方键盘的时候系统依然提供了那个自带的语音输入能力,并不是系统的 privilege 。
lingxiaoli
33 天前
以前是可以的 后来更新了就不能直接在当前转文字了
lspnicol
30 天前
@lingxiaoli 对,以前是可以的,忘了哪一代 ios ,更新之后就发现不行了,语音输入只能靠内置的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1162085

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX