科技与念诵计数——让手机听我念佛,自动帮我数数

前几天我写了一篇文章《地藏法门:第二个百万地藏菩萨圣号》,只发在我的网站上,公众号发表没通过审批。文章里面主要说了两件事情:十多年前,我刚学佛的时候,念过地藏菩萨圣号一百万遍;十多年后的今天,我想要再念一次,再念一百万遍。
然后我就开始念了。既然有数量的要求,那么在念诵的时候,自然就需要计数了。而在佛教圈里面,最常见的计数器,就是一个戴在手指上的计数器,大概样子是这样的。

(图片来源:维基共享资源,作者 Wikiman5676,CC BY-SA 4.0)
碰巧我手头的计数器要么坏了,要么丢了,要么没电池了。这下要计数,该怎么办呢?首先我就想到了找一个手机应用(app),最好是可以在我的苹果手表上用的,这样就方便了。我还真的找到了一个 —— Counter,它不仅在手机上可用,也可以在手表上用。用起来整体感觉还是可以的。

但还是有一些场合,它满足不了我。每天开车上下班的时候,其实是非常适合念佛的,尤其是堵车的时候,可以心平气和,减少路怒。但是,一边开车一边念佛,还要一边计数,就太麻烦了,而且也不安全。于是我就想,是否可以打开手机,让它听我念诵,自动帮我计数呢?
现在都有 AI Vibe Coding 了,想到了就开始行动。
第一个办法:先学 20 秒,再套模板
AI 先推荐了第一个方式:念诵的时候,先自动学习 20 秒,掌握念诵的节奏、音律,保存成一个模板,然后用这个模板去套后面的念诵,达成自动计数的目的。
这个方法比较简单,AI 几分钟就完成了一个基于网页的版本。基于网页是我的要求,因为可以部署到被大家称为“赛博菩萨”的 Cloudflare 上,随时随地我都可以打开网页使用。
经过了几次迭代,最终的效果总是不理想,会漏数很多。因为它学习的时候,听到的是比较正常的念诵,但是在实际的念诵中,有时快,有时慢,有时低音,有时高音。总之,因为念诵得不够稳定,就会出现漏数的情况。
误差在 10% 左右,意思是实际上念诵了 100 遍,但是会被计数为 90 遍。下面这张图就是一次测试:我念了 100 遍,它数出来 91 遍。图里每一个绿框是它数到的一遍,中间没有框住的地方,就是漏掉的。

如果是我自己写代码,这个结果已经是非常好的了。但是,有 AI 以后,我肯定就不满意了。
第二个办法:自己训练一个小模型
和 AI 老师聊了一下后,AI 老师说,这个“先学习、保存成模板”的方法,天然就有缺陷。于是,又给出了第二个方法:从 0 开始,自己训练一个小模型。和现在的大模型动辄几十亿参数相比,它只有一百多万个参数,那就是小模型了。
麻雀虽小,五脏俱全。虽然是小模型,但是过程却和训练大模型是一样的:先准备数据,标注数据,然后训练、验证、测试。再重复这个过程,并加入更多的训练数据和标注。
准备数据,就是录下我自己的念诵。为了让它见过各种念法,AI 又做了一个录音的网页,网页上一条一条给出任务,我照着念就行:正常速度念 10 遍,快念 20 遍,慢念 5 遍,轻声念 10 遍,念 3 遍之后只念“南无地藏”就停下,不出声 10 秒、只是咳嗽和清嗓子……

标注数据,就是告诉模型每一段录音里念的是什么、念了几遍。照着任务录的那些,任务本身就是标注,不用事后再听着数。另外我还连续念了几段 100 遍的长录音,这种就要靠人来标了:在第一个办法的网页上,它漏掉的地方,我在图上点一下补一遍。下面这张图里,蓝色虚线框就是我手工补上的,一共补了 9 遍,凑满 100 遍。

这样前后录了五十多段,加起来大约 11 分钟的声音。训练是在我自己的电脑上跑的,一次半个小时左右。训练出来的模型文件只有 5.4 MB,放在网页里,在手机浏览器上就能运行。
它和第一个办法的不同在于:第一个办法是拿一整句的“样子”去比对;这个模型是逐字去听,听出“南、无、地、藏、王、菩、萨”这七个音,一句念到“菩萨”才算一遍。所以它不依赖固定的节奏和音高;念到一半停下来,它也不会计数。
跑了两轮以后,我用正常语速念诵测试,准确率居然达到了 100%:我念诵了 100 遍,它完整地计数了 100 遍。准确程度,惊讶到我了。看起来,这个方案是比较正确的了。

目前的限制
因为只用我自己念诵地藏菩萨圣号的录音训练过,所以,这个模型目前只认得我一个人的声音,只认得“南无地藏王菩萨”这一句。换一个人来念,或者念别的佛号,它多半就数不准了。
上面说的 100 遍数出 100 遍,也只是正常语速下的测试。特别快、特别轻,或者周围很吵的时候,我还没有仔细测过。
你也可以用
这个网页我已经放在 Cloudflare 上了,任何人都可以打开:
https://chant-counter.jeffwoo2019.workers.dev
用手机或者电脑的浏览器打开就行,不用安装。所有的计算都在你自己的浏览器里完成,声音不会上传;打开过一次以后,断网也能用。
网页上有两种模式,正好对应上面说的两个办法。
随念随数,就是第一个办法。任何人都可以用,不需要事先训练。点“开始”以后照常念,它先听 10 到 20 秒,学会你念的这一句,然后开始计数,并把前面念过的补上。常见的佛号、菩萨圣号和几个短咒都可以选,比如南无阿弥陀佛、南无观世音菩萨、六字大明咒,也可以自己输入。用这个模式的时候,念诵要尽量平稳,越平稳,计数越准。
模型版,就是第二个办法。不需要学习,开口就计数,但目前只认得我的声音和“南无地藏王菩萨”。
想让模型也认得你的声音
如果你也想用模型版,可以录一份自己的念诵发给我,我把它加进训练数据里,重新训练、测试,再把新的模型更新到网站上。步骤是这样的:
- 打开网站上的“录训练数据”页面,选好要念的佛号或圣号,照着提示一段一段地念。
- 至少录完一轮,一共 18 段;能录两三轮更好。
- 点“导出”,会得到一个 zip 文件。
- 把这个 zip 文件用邮件发给我:[email protected]。
录音只留在你自己的浏览器里,导出并且发出邮件以后,才会离开你的设备。发来的录音只用来训练这个计数的模型;训练出来的模型,会公开放在这个网站上给大家用。
需要说明的是,目前模型只训练了“南无地藏王菩萨”这一句。别的佛号和圣号,要等收到足够的录音以后,才能训练出来。在此之前,可以先用“随念随数”。
写在最后
从想到这个主意,到念 100 遍数出 100 遍,前后只用了两天。写代码、训练模型这些事情,都是 AI 完成的;我做的,只是提要求、录音、测试,然后告诉它哪里数错了。
有了它以后,开车的时候我只要把手机放在一边,点一下“开始”,然后安心念诵就可以了,念了多少遍,到了以后再看。
计数器只是一个工具,念诵才是正事。希望这个小工具,对同样在念佛、念菩萨圣号的你,也有一点用处。
