今天在写小程序云函数,为了不依赖第三方库,自动手动实现鉴权,并找单独的 base64/md5/hmac/post 等单文件实现的版本。最后,终于还是实现功能了,可惜花的时间太多了。本打算今天放出体验版的,结果还是做不到。
好处是,有些工作只用做一次,下次直接复制这些代码即可。不过,如无必要,还是直接依赖第三方库算了。人生苦短,还是少重复造轮子的好。
独立开发,自由职业
今天在写小程序云函数,为了不依赖第三方库,自动手动实现鉴权,并找单独的 base64/md5/hmac/post 等单文件实现的版本。最后,终于还是实现功能了,可惜花的时间太多了。本打算今天放出体验版的,结果还是做不到。
好处是,有些工作只用做一次,下次直接复制这些代码即可。不过,如无必要,还是直接依赖第三方库算了。人生苦短,还是少重复造轮子的好。
今天早上把「视字」小程序的 体验版 做出来了,也发给了几个人试用,暴露出了很多问题。最关键的是,太太慢了。
首先,我使用了 https://file.io 进行 文件中转。这个是国外的服务,之前一直开代理没感觉;在普通网络下,上传很慢,甚至可能会有超时之类的错误。
然后,发现正在使用的、免费的 在线格式转换服务,其中限制了每天 30 分钟额度。哎,大意了。之前其实我是看了价格的,没注意到。并且,这个也是国外的服务,也有慢的问题。
由于这两个问题,现在的方案必须得有大的调整。现在可行的方案是:使用国内的云存储,上传视频后自动转码。本以为这是很成熟的服务了,没想到还是有很多坑。
首先,我试用了 阿里云和腾讯云 的相关服务,发现有个致命的问题:音频的最低采样率大于 16k Hz。而 搜狗的音频识别必须使用 16k 的采样率。发工单问了客服,告知确实不行。哎,没办法,只能放弃这两家。
然后去看了 七牛。恩,看起来老实厚道七牛是没问题的,可真的一试,又发现一个坑:音频转码时不支持设置 bit per sample(中文是分辨率?位深?)。这也麻烦了,因为 搜狗的音频识别必须使用 8 bit 或 16 bit 的分辨率。理论上,可以通过设置码率(因为码率 = 采样率 位深 声道数)来倒过来设置位深,而实际测试并不工作。发工单给七牛,无奈这有点专业,售后解决不了,得等他们技术来支持。现在,这事卡在这了,除非我再去找一家云服务。
同时,我又去了解了下 腾讯 AI 长语音识别,哎,也有坑。比如,服务器时不时返回 502(可以看出,给其配备的服务器资源并不充足);很多时候创建任务成功,却永远收不到回调。从偶尔成功时返回的结果来看,文字识别结果并不如讯飞或搜狗,包括文字不准确、大段文字而没有标点等。
我感觉,腾讯 AI 还是试验性阶段,各种不靠谱。可能腾讯云是商务的,应该靠谱些。其实我也不明白,腾讯云和腾讯 AI 是什么关系,不会像 QQ 和微信的关系吧。
除此之外,百度 也提供了长音频提取文字,不过刚刚开始公测。我已经申请了,在等结果。现在是疫情时期,估计会很慢。下午错过了一个百度的电话,可能跟这事有关,有点后悔没接到电话,耽误事了。
哎,这么个小程序、小项目,没想到会遇到这么多坑。有时,你看到一个产品很简洁,殊不知,在走到最后简洁这一步之前,已经踩过多少坑。再一个感叹便是,国内的这些云服务,看起来大而全,真往细了用时,问题很多。
程序员中有个段子:最难的是,如何命名。
开发小程序,有同样的问题。今天的最后几分钟,本打算注册小程序并提交。结果,在给小程序起名时卡了半天。核心的在于,对于「视频」「文字」这些通用词汇,微信基本上是不给注册的。可怜我想起类似「视频文字提取」这样的名字,肯定是不行的。
憋到最后,在寒冷的冬天的晚上,我的腿都快冰了,站起来走两步,抖了个机灵,想到「视字」这个名字,立马坐电脑前一试:呀,居然成了!瞬间郁闷成了开心😄「视字」不就是视频中的文字嘛,而且还短,简直太贴切了。当然,最大的问题是对搜索不友好,用户连输入这两天字都有点麻烦。不管了,能想到这个名字就不错了。
万万没想到,我最后还是没提交。原因在于,小程序限制可访问的域名。而我用到的在线视频转码服务,是动态返回上传地址的。我简单测试了下,居然有将近 50 个可能的域名;而微信最多支持 20 个。哎,这个方式不行了,只能先上传至某个云存储或文件中转,然后再识别。哎,明日再战。
这两天在做一件事:从视频中提取文字。
场景是这样的:比如,在看教学视频时,有时嫌视频太慢,希望从视频中提取出文字,打印出来看。10 分钟的视频,看文字可能 1 分钟就看完了,回看也很方便。还有其他一些场景,比如字幕组在翻译生肉视频时,很需要从视频中提取中英文原文,进而翻译、制作字幕。
这个问题说来也容易解决,视频 > 音频 > 文字。不过要放到具体的环境中,可就有些麻烦了。
先说从视频中提取音频。如果是在电脑端,这是很容易解决的。不过目前我打算先上个小程序,而小程序的能力很有限。想了半天,最后不得已暂时先使用在线转码服务。这样主要的问题有两个:一是视频文件通常很大,上传会需要花较多时间;二是需要找到这样的服务,最好是免费的、或者不贵。最后我找到的是 https://www.online-convert.com/ 这个强大又免费的在线服务。
再来就是音频中提取文字,这是重点。而其中最关键的,则是识别效果。我粗糙的比较了一系列云服务,最好的是讯飞和搜狗知音,其他的包括百度、阿里、腾讯,都没达到我想要的效果,算是第二梯队。讯飞的口碑和知名度是最好的,我没想到搜狗知音竟然也达到了几乎和讯飞相同的程度,可能搜狗输入法带来的大量语料也是种加持。
在这一过程中,能直观感受至各家水平的差异。比如,你好歹给个在线体验的入口,总不能非得写代码才能验证效果,这就太麻烦了。
其他因素包括接口便捷性、速度、并发性、价格等。我最后选择的是搜狗知音,很大程度是讯飞竟然只能上传本地音频文件,不支持使用 url 的方式。由于我先前说了,是使用云服务来提取音频,如果加上下载、再上传,那就太浪费时间了。价格方面,讯飞也是最感人的,搜狗基本是其一半多一点,一分钟约 0.1 元。
搜狗知音的接口也是有坑的:查询识别结果的接口,竟然要间隔 30s,这实在是太不自信了。好在我实测间隔 10s 也不会报 429 错误,先将就着用吧。另外就是识别速度并不快,我在深夜测试,这段时间应该不太会有很多其他用户的并发,可见其服务器资源并不充裕。
今天用 node 把这些流程全部实现并调通,明天准备创建小程序并接入。
最近在看特*朗-普的自传,目前感触最深的便是:精明不过商人。
其中一个表现是,不论发生什么情况,都有应对之策。比如,买了一个地皮,准备盖大厦,需要一系列审批。如果审批能下来,自然最好;如果不能下来,也有把握溢价将地皮出手。
这样一位精明的商人总统,在中美关系中,基本他总是想占便宜的。要想让他吃瘪,那简直太难了。基本上,更可行的还是在互利的基础上,让一部分利给对方。