Skip to content

下载安装

注意,由于词库体积较大且不能通用,声笔四拼并没有放在声笔输入法统一的安装包中,需要另行下载安装。请点击此链接下载其中的 snow.zip 文件,解压缩之后放入您的用户文件夹。

各文件的作用如下:

  • snow_pinyin.schema.yaml: 全拼方案文件,用于反查
  • snow_pinyin.dict.yaml: 词库文件(一字词)
  • snow_pinyin.{base,ext,tencent}.dict.yaml: 词库文件(多字词)
  • snow_pinyin.symbols.yaml: 特殊符号
  • snow_stroke.schema.yaml: 笔画方案文件,用于反查(依赖于 Rime 五笔画,如果您的 Rime 前端不预装五笔画请先安装)
  • lua/snow/*: 用于实现方案逻辑的 lua 脚本
  • snow_sipin.schema.yaml: 四拼方案文件
  • snow_sipin.fixed.txt: 四拼固顶词

设计理念

声笔四拼是一个带调拼音词顶功输入方案,它脱胎于声笔系列码中的声笔拼音方案,但是用声调取代了其中的笔画成分,使其不再涉及字形信息而是成为了纯粹的音码,从而探索了新的输入体验。其设计理念如下:

  1. 充分发挥带调拼音的离散能力,降低重码并在短码空间内容纳更多的词;
  2. 在声母和韵母不乱序的情况下尽可能优化键位的使用率以及双键组合的顺手程度;
  3. 根据「频率为主、语义优先」的思想设置固顶词,使得用户能够快速熟悉高频词的打法,同时大大降低了固顶词的记忆难度。

此外,本方案采用的声母和韵母的定义完全符合《汉语拼音方案》中的原始形式,没有受到全拼特有的正字法的影响。在这个意义上,本方案比一般的双拼方案更加规范。

拼写规则

音节分解

本方案首先将汉语拼音的音节分解为声母、韵母和声调。例如「冰」,汉语拼音 bing1,可以分解为声母 b、韵母 ing 和声调 1(阴平)。

大部分音节的分解都非常简单直接,但是有些音节在用汉语拼音拼写时作了一些变形,本方案中要首先把这些音节还原为原始的声母、韵母和声调,因此要特别注意:

  • a, ai, an, ang, ao, e, ei, en, eng, er, o, ou:这些音节无声母,本方案规定其声母为「零开」,例如「安 an1」分解为「零开 + an + 1」;
  • wa, wai, wan, wang, wei, wen, weng, wo, wu:这些音节实际上也没有声母,是由韵母 ua, uai, uan, uang, uei, uen, ueng, uo, u 在自成音节时变形得来的;本方案规定其声母为「零合」,韵母取其变形前的形式,例如「弯 wan1」分解为「零合 + uan + 1」;
  • ya, yan, yang, yao, ye, yi, yin, ying, yong, you:这些音节实际上也没有声母,是由韵母 ia, ian, iang, iao, ie, i, in, ing, iong, iou 在自成音节时变形得来的;本方案规定其声母为「零齐」,韵母取其变形前的形式,例如「烟 yan1」分解为「零齐 + ian + 1」;
  • yu, yuan, yue, yun:这些音节实际上也没有声母,是由韵母 ü, üan, üe, ün 在自成音节时变形得来的;本方案规定其声母为「零撮」,韵母取其变形前的形式,例如「冤 yuan1」分解为「零撮 + üan + 1」;

以上四种情况「零开」「零合」「零齐」「零撮」统称为「零声母」,所涉及到的音节称为「零声母音节」。另外:

  • 声母 j, q, x 后面接 u 时要还原为原始形式 ü,例如「娟 juan1」分解为「j + üan + 1」;
  • 韵母 iu, ui, un 还原为原始形式 iou, uei, uen,例如「秋 qiu1」分解为「q + iou + 1」;也就是说,「秋」和「优」同韵母,「微」和「灰」同韵母;

下面我们来依次对声母、韵母和声调编码。

声母

所有声母都用一个编码表示。其中单字母声母 b, p, m, f, d, t, n, l, g, k, h, j, q, x, z, c, s, r 的编码与其自身相同,无需记忆;需要记忆的只有 zh, ch, sh 这三个双字母声母以及前面提到的零开、零合、零齐、零撮四个零声母。如下表:

声母编码声母编码
零开rzhw
零合schy
零齐fshv
零撮k

您可以在下面的对话框练习这七个声母:

已学会
0 / 7
已熟悉
0 / 7
zh
请输入对应的编码

韵母

有些韵母用一个编码表示,有些韵母用两个编码表示。如下表:

韵母编码韵母编码
a, üa/aa
o, io, uo, üeo/oa
e, ieemea
i, ua, eri/ia
u, iau/ua
an, ünaoangae
üanooong, iongoe
eneoeng, ngee
in, uanioing, uangie
uen, ianuoueng, iangue
aiaiaoau
/oiou, iouou
eiei/eu
uaiii/iu
ueiuiiaouu

观察表格,很容易发现其规律:

  • 第一码对应韵母的前半部分(称之为韵头)。例如 ua, uai, uan, uang 都以 ua 开头,所以它们的第一码都是 i
  • 如果有第二码,它对应韵母的后半部分(称之为韵尾)。例如 ang, eng, ing, ong, uang, ueng, iang 都以 -ng 结尾,所以它们的第二码都是 e
  • 韵母 ao, iao 的第二码规定为 u,和 ou, iou 放到同一组;
  • 对于特殊的鼻音韵母 m 和 ng,规定它们的韵头为「零韵头 ∅」,第一码为 e;最终编码分别为 eaee

根据这些规律可以把上表进一步精炼成下面的形式:

韵头韵尾编码
a, ü-ma
o, io, uo, üa, üe-no
e, ie, ∅-nge
i, ua, er-ii
u, ia, ue-uu

总之,您可以选择直接记忆韵母的双编码,也可以选择记忆韵头和韵尾的编码然后将它们拼合起来得到双编码。您还可以在下面的对话框练习韵母:

已学会
0 / 37
已熟悉
0 / 37
üan
请输入对应的编码

最后,附录中从音韵学的角度解释了这些编码为何要这样设置,如您有兴趣也可以查看。

声调

所有声调都用一个编码表示:

声调编码
去声 4a
轻声 5o
阳平 2e
阴平 1i
上声 3u

总结

综上所述,声母为 1 码、韵母为 1 或 2 码、声调为 1 码,因此一个带调音节总共用 3 或 4 码来表示,这也就是名字「冰雪四拼」的由来。下面给出几个音节的示例,请您对照上面的规则思考如何推导出对应的编码:

音节分解编码
白 bai2b + a + i + 2baie
狗 gou3g + o + u + 3gouu
声 sheng1sh + e + ng + 1veei
笔 bi3b + i + 3biu
调 diao4d + ia + u + 4duua
庄 zhuang1zh + ua + ng + 1wiei
而 er2零开 + er + 2rie
我 wo3零合 + uo + 3sou
有 you3零齐 + io + u + 3fouu
月 yue4零撮 + üe + 4koa
嗯 ng4零开 + ∅ + ng + 4reea

零声母音节的拼写是本规则的主要难点,您可以在附录中查看所有零声母音节的拼写来进一步熟悉。

基本输入

编码

本方案使用统一的规则来编码所有不同长度的词:

依次取词的各个音节的声母编码;如果首选未命中,追加末音节的编码直至三码;如果首选仍未命中,追加首音节的编码直至三码。

也就是说,把音节的前三码看作是「构词码」,每个词先打简拼然后逐渐补全末音节和首音节的完整构词码。以下针对不同长度的词分别举几个例子:

  1. 单音节词:「有」的编码为 f,「又」的编码为 fo,「由」的编码为 fou,「右」的编码为 foua
  2. 双音节词:「你好」的编码为 nh,「手机」的编码为 vjii,「元气」的编码为 kqiaoo
  3. 三音节词:「为什么」的编码为 svm,「最低点」的编码为 zdduo
  4. 四音节词:「感同身受」的编码为 gtvv,「附庸风雅」的编码为 ffffuu
  5. 以此类推,n 音节词的编码可能为 n 码到 n+5 码不等。

对于大于等于五个音节的词语,进一步规定第五个声码以及之后的所有声码需要用大写字母来输入。例如「科学发展观」的编码为 kxfwG,「哀莫大于心死」的编码为 rmdkXS,「中华人民共和国」的编码为 whrmGHG

由于动态调频的存在,实际输入的编码可能与上述介绍有细微的差异。

顶功

本方案的编码具有很强的顶功特性。

对于单音节词、双音节词、三音节词来说,除了 n 码时需要使用空格上屏之外,更长的编码都能在输入下一个词的首码的时候自动被顶上屏。

对于四音节词以及更长的词来说,所有的编码种类都能在输入下一个词的首码的时候自动被顶上屏。这是因为前面规定了第五个声码以及后面的声码都用大写字母输入,和下一个词的首码没有重叠。

后置

在逐码输入的过程中,如果一个字词已经在首选出现过,那么在后续输入中它将不再位于首选,这可以充分利用编码空间,并且降低重码。

练习模式

在使用本方案的初期,为了尽快熟悉拼写,建议切换到「整句」模式,此时「顶功」和「后置」都不起作用,可以打全每个字的前三码(也即构词码)参与组句。这样做,可以更多地熟悉韵码和调码,同时不受到顶功和后置的影响。

高级功能

固顶

一般情况下,输入各种编码时候选的排序会随着用户的使用逐渐调整,以贴合用户的使用习惯。但是,如果高频词的排序常常变动,则难以熟练掌握。因此,本方案精心设计了一些固顶词,这些词在输入对应编码时总是处于首位,可以直接顶屏或者(在不能顶屏的情况下)用空格上屏,并且这些都定义在 snow_sipin.fixed.txt 中,可以自由修改。

相比于声笔简整和声笔拼音,本方案设计的固顶词更多,包括了 636 个单音节词和 510 个双音节词,而且进行了更加细致的优化。这使得在一般的连续性输入文本中固顶词的总频率已经达到了 70% 以上,所以掌握固顶词可以快速提高输入方案的熟练度。这些固顶词的规律是:

  • 单音节词的一码(21 个)、二码(105 个)和三码(510 个)全部固顶;
  • 双音节词的二码(441 个)全部固顶,而三码和四码选取了一部分(69 个)固顶;

为了减小固顶词的记忆难度,本方案选取固顶词的时候采取了语义优先的策略,也就是语义相关的词往往具有相同或相关的固顶码长,记住一个往往就记住了一大片。例如,

...
# 事物代词
wg	这个
ng	那个
nge	哪个
wr	这儿
nr	那儿
nri	哪儿
wl	这里
nl	那里
nli	哪里
...

snow_sipin.fixed.txt 中有很多像这样的语义集中的「区块」,看过一次之后就能留下比较深刻的印象。

另外,「的」和「了」两个字因为频率非常高,所以分别采用 ;/ 键输入,不占用常规固顶词的位置。如果不喜欢这个设定,可以在固顶词文件中自定义。作为替代,分号用 i 输入,顿号用 \ 输入。

无理音节

在设置固顶词的时候,注意到「三」和「四」的声母都是 s,无法在「三个」、「四个」等词中保持同样的码长,而且因为「五」的声母「零合」也在 s 上,让这个问题更加严重了。另外,「日」和「二」的前三码都是 ria,也破坏了一些词的整齐性。

为了解决这个问题,对「三」、「五」、「日」这三个字所在的音节增加了无理音节码:

  • san1 这个音节也可以用 heu 打出来,同时也是「三」的固顶码
  • wu3 这个音节也可以用 gue 打出来,同时也是「五」的固顶码
  • ri4 这个音节也可以用 rii 打出来,同时也是「日」的固顶码

记忆的时候,可以把它们当成是一周中的三天,用「周三 wheu」「周五 wgue」「周日 wrii」这三个固顶词来辅助记忆。另外,虽然这些音节的其他字也能用无理码打出来,但是并不推荐这样做,因为会干扰常规音节码的键位;如果反过来当成是改变了这三个字的读音,会更容易适应。

造词

有两种方式来造一个新词:

一是输入词的编码后,候选中会首先显示与输入编码音节数量相等的候选词,然后排在后面的是字数较少的候选词。此时可以直接通过数字键或翻页来选择字数较少的候选词,从而把词拆解成单字或较小的词依次确认上屏;这种造词方式和普通的智能拼音输入法是一样的。

但是,因为词的编码是以简拼为主,所以如果重码较多,比较难快速定位到想要的字词。这时候宜使用定位修改的方式快速把词拆解开来。按一下 1 定位到第一个音节后面,或者多按几次 1 定位到其他音节后面,补充笔画然后确认上屏。

英数混输造词

在科技文本中,经常出现混有英文、数字的词语的情况。为了让这些词也能够自动造词,本方案给所有数字和英文字母也指定了相应的音节码。其中,数字与相应中文数字相同,并且排在三码候选的第二位;英文字母的音节码是填在三码的空码内,但也有一定的规律,详见 snow_sipin.fixed.txt。使用这些候选,就可以轻易造出如「5G通信」这样的词:

略码

略码是输入特定结构的词的办法,能够避免一些词带来的不确定性,同时明显减少输入单字的机会。以下我们用全角字母「ABC……」来表示词中的待定成分。

由于本方案中「的」和「了」是一键字,且可以标点顶屏,所以「A的」「A了」「AB的」「AB了」这样的词就不必按词打,打完前面的部分之后打相应的标点键就可以了,这也是一种特殊的略码。下面是更一般的略码形式:

完整重复

完整重复整个词的「AA」、「ABAB」、「ABCABC」……型:略码为 [,如「吃吃」是 yi[;双音节及以上的词,因为 [ 已经被占用,所以略码为 A,如「尝试尝试」是 yviA

对二字词来说,还有一种特殊的「AABB」型,略码为 O,如「可可爱爱」是 krO

部分重复

重复词的首字或末字的「AAB」、「ABB」、「AABC」……型,略码为 E(重复首字)和 I(重复末字):如「打打牌」是 dpaiE,「打打篮球」是 dlqouE,「睡觉觉」是 vjuI

插入重复

「A不A」「A一A」「A的A」「A了A」「A了一A」「A啊A」「A呀A」型:略码分别为 B, F, D, L, K, R, U,如「好不好」是 haB;「AB不AB」以及更长的词也一样,比如「可爱不可爱」 krB 打出来。这里 B, F, D, L, R 表示的是相应插入成分的声码,便于记忆。

「A着A着」:略码为 W,表示「着」的声码

「A来A去」:略码为 Q,表示「去」的声码

其余略码形式

还有一些常见的略码形式没有安排,可以根据自己的需要来设计:

「A个B」:只插入不重复,如「吃个饭」

「A了AB」「A不AB」「A里AB」:既重复又省略了一个字,如「开不开心」

以词定字

虽然本方案在大多数情况下输入单字不需要选重,但是对于某些生僻字可能以词定字会更快一些。首先输入词的编码,然后按 [ 上屏词的首字,按 ] 上屏词的末字。

辅助码

辅助码是另一种输入生僻字的办法,但是需要借助字形信息。

笔画辅助码

笔画辅助码是在单音节词的音节码输入完成之后直接继续输入笔画来筛选的办法,其中横竖撇捺折分别用 e, i, u, o, a 来表示,这与声笔系列码相同。笔画最多可以输入 4 笔。例如,输入生僻字「芫」,在音节码 kooe 输入完成之后继续加两个笔画 ei,即出现在首页。

不过,因为无韵尾音节编为 3 码、而有韵尾音节编为 4 码,所以无韵尾音节在补笔画的时候也可能会和其他音节冲突。为了改进选重体验,可以打一个 o 补全 4 码,然后再输入笔画,这样就没有歧义了。例如,输入生僻字「翊」,在音节码 kooe 输入完成之后继续加两个笔画 oe,即出现在首页。

笔画辅助码也能够顶功,在输入辅助码的过程中若所要的字为首选,继续输入下一个字的编码即可顶上屏。

部首辅助码

有些情况下,生僻字的笔顺可能不熟悉,或者不能很好地被笔画离散开,例如要输入「嶅」,但是声旁为「敖」的字笔画都一样:

为此,本方案还提供了另一套部首辅助码。这个辅助码基于 GF0012-2009 国家规范,每个字有唯一指定的部首,而字的辅助码就是部首的音节码。要使用部首辅助码,需要先按一下 1,然后再输入部首的音节码:

这里「嶅」的辅助码即「山」的音节码 vaoi,只输入一码就可以将所要的字提到首选:

另外,由于这种辅助码使用了 1 作为引导键,所以无韵尾音节不需要补 o 也可以使用辅助码,例如

在不清楚声调的情况下,也可以打完 2 码就加辅助码:

部首辅助码也能够顶功,在输入辅助码的过程中若所要的字为首选,继续输入下一个字的编码即可顶上屏。

反查

本方案提供两种反查方式:拼音反查和笔画反查

拼音反查

虽然本方案本身就是音码方案,但是考虑到用户可能忘记某个音节的拼写,或者知道其中一个读音想查询其他的读音,所以提供拼音反查功能。拼音反查需要用 a 键引导。例如,输入 ahe,可以查询到「和」的 6 个读音对应的拼写:

笔画反查

笔画反查依赖于 Rime 自带的「五笔画 / stroke」方案。笔画反查需要用 u 引导,并用 e, i, u, o, a 来输入横竖撇捺折,这与辅助码是一样的。例如,输入 ueiuoa,得到

重复上屏

若已经输入过一些内容,可以用 e 键来调出上屏历史,然后选择上屏。例如,使用 yfu 输入「重复」之后,「重复」就出现在 e 的首选:

符号

e 键同时还承担了输入特殊符号的功能。例如,输入 ea 可以得到 a 的各种变体字母:

具体的符号内容和 Rime 自带的 symbols.yaml 相同,只是引导键变成了 e

lua 脚本

o 键可以引导调用一系列 lua 脚本。例如,o 加数字可以转换中文数字:

还可以计算任意 lua 表达式:

评测数据

下列技术测试采用的词频为个人统计得到的社交媒体词频(语料来源:GitHub 仓库)经 jieba 默认词典分词得到的词频。

离散能力

以单音节词最长编码为 4 码(无韵尾音节补 o),统计《通用规范汉字表》中的 8105 字共 8773 字音,得到如下分布:

单音节词长度字音数频率
一键1617.01%
二键217062.91%
三键351012.69%
四键411235.57%
页内选重535241.74%
翻页选重634450.07%
总和8773

可见,即使不使用辅助码,单音节词的选重率也不到 2%,翻页率不到 0.1%。一键、两键占比 80%,前三键占比 92%。

以多音节词最长编码为 6 码,统计雾凇拼音词库中的词频前六万词,得到如下分布:

多音节词长度词音数频率
三键3264058.25%
四键42375826.18%
五键51716711.40%
六键6123293.63%
页内选重740920.54%
翻页选重8140.00%
总和60000

手感

单音节词当量为 1.286,多音节词当量为 1.333,总当量为 1.318。用指分布如图所示。除 a 键使用频率较高外,其余均较为合理。

附录

助记方法

  • ia, ua, üa 这三个含 a 的韵头并排位于 u, i, o 键上;
  • i 和其键上的 er 都可能来自中古汉语的止摄,例如「你 ni3」从「尔 er3」、「腻 ni4」从「贰 er4」;
  • e 和其键上的 ie 都可能来自中古汉语的假摄,例如「谢 xie4」从「射 she4」
  • o 和其键上的 io, uo, üe 都可能来自中古汉语的宕、江摄文读,例如「哟 yo5」从「约 yue1」、「略 lüe4」与「络 luo4」谐声,并且有些方言「学」读若 xüo2,和 o, io, uo 主元音也相同
  • a 键上的 ü 有些字(如「鱼」)在上古汉语韵母为 /a/
  • a, o, e 三个键按拼音表上的顺序排列的时候,上面的韵尾 -m, -n, -ng 的发音位置正好是从前到后(唇、舌尖、舌根)

所有零声母音节的拼写

这个表格主要是为了让大家理解本方案对零声母的处理方式,需要注重观察规律,请勿死记硬背。

音节声母韵头韵尾拼写
挖 wa零合uasi
歪 wai零合uaisii
弯 wan零合uansio
汪 wang零合uangsie
微 wei零合ueisui
温 wen零合uensuo
翁 weng零合uengsue
窝 wo零合uoso
乌 wu零合usu
压 ya零齐iafu
腰 yao零齐iaufuu
烟 yan零齐ianfuo
央 yang零齐iangfue
椰 ye零齐iefe
哟 yo零齐iofo
优 you零齐ioufou
庸 yong零齐iongfoe
一 yi零齐ifi
因 yin零齐infio
应 ying零齐ingfie
迂 yu零撮üka
晕 yun零撮ünkao
渊 yuan零撮üankoo
约 yue零撮üeko

非成字部首的读音

部首读音
heng2
shu4
丿pie3
dian3
zhe2
fang1
jiong1
bao1
tou2
bing1
mi4
kan3
jie2
si1
yin3
cao3
gong3
wei2
shan1
zhi3
pan2
mian2
chuo4
ji4
che4
chuan1
pu1
wang3
ne4
ya3
bo1
hu1
si1
zhuo2
biao1
dou4