2014年8月22日星期五

宣布 JKSN,又一个 JSON 兼容二进制压缩格式

本来只是想可不可以用二进制来储存 JSON 并且做一些优化之类的,结果造出来 JKSN 这货。
比较了一下文件大小,发现没有经过压缩的 JKSN 数据比 gzip -9 JSON 还要小。于是把 JKSN 的目标定为让 JSON 序列更小。

JKSN 适用于任何网络带宽比处理时间更重要的场合,如移动即时通讯。

项目地址:https://github.com/m13253/JKSN。Specification 和参考实现均以 BSD 协议发布。

为什么不用 GZIP 呢?
JKSN 和 GZIP 不冲突。JKSN 编码后的数据可以被 GZIP 压缩得更小。
由于 GZIP 的 32 KiB 滑动窗口的设计,相似的数据只有互相间隔不超过 32 KiB 才能得到有效压缩。JKSN 会将数据重新组织,使相似的数据尽可能靠近排列,更有利于 GZIP 的压缩。

下面,用项目主页上举的例子,做个比较,:
格式文件大小
JSON150 字节
JSON gzip -9112 字节
JKSN109 字节
JKSN gzip -9107 字节
再来比较同类二进制 JSON 实现:
格式文件大小
BSON172 字节
Universal Binary Json150 字节
MessagePack120 字节
JSONH116 字节
BJSON(内置自适应哈夫曼压缩)115 字节
JKSN109 字节

如果各位读者对此项目感兴趣,且有空余时间,不妨让 JKSN 变得更好:
目前 JKSN 已经有 Python 3、Python 2、浏览器 JavaScript、Node.JS、C 五种环境的实现了。如果你愿意,请帮助我为 JKSN 补上 PHP 5、Java 的实现。
追求模范性和稳定性的实现可以直接 fork JKSN repository 并发给我 Pull Request;追求速度的实现可以另开新 repository 并通知我。
如果你知道怎么重新组织 JSON 结构让其更易于压缩,请联系我。我希望和你探讨问题。

2014年8月16日星期六

中文普通话参考音素表

Rocaloid 语音合成引擎正在 Sleepwalking 的领导下紧张地开发中,制作中文音源需要哪些音素呢?
Rocaloid 现在版本是以单音节(monophone)为合成单位,所以录音数量大大降低了,有条件录制某些特殊情况下的发音变形。
以此我整理了一份参考音素表,只做参考,如有遗漏或错误请留言通知我。
标有 (p) 的是弱读和快读时的发音变化,相对的是 (f) 标记。

辅音 Consonants


汉语拼音参考IPA 音标参考X-SAMPA 音标参考备注
bpp
pp_h
mmm
fff
dtt
tt_h
nnn
lll
gkk
kk_h
hxx
jts\
qtɕʰts\_h
xɕs\
zhʈʂts`
chʈʂʰts`_h
shʂs`
rʐz`
ztsts
ctsʰts_h
sss
szzz用来拼写外来语、少数民族语言和方言
vvv
y (p)jj快读时 i u 变为 j w
w (p)ww
0ʔ?声门塞音

单元音 Mono-vowels

汉语拼音参考IPA 音标参考X-SAMPA 音标参考备注
aaa
o (p)oo如“咯”
e (p)ɤ7如“了”
ehɛE汉语拼音方案记作“ê”,注音符号记作“ㄝ”,如“诶”
iii
ihɯ / ɨM / 1注音符号记作“ㄭ”,如“私”
uuu
üyy有时使用字母“v”代替
nnn这里把鼻音视作元音处理
ngŋN
mmm

双元音 Di-vowels

汉语拼音参考IPA 音标参考X-SAMPA 音标参考备注
aiaI
aoaU
ananan
angɑŋAN
erɑɹAr\如“二”
ouɤʊ7U有些人偏好读作 oʊ
enən@n
engɤŋ7N
eieI
iaiaia
ioioio如“哟”
ieiE
ininin
uauaua
o (f)uouo与 p pʰ m f 拼读,如“播”
uouO如“我”
ongʊŋUN
üeyE如“月”
e (f)ɯʌMV如“饿”

三元音 Tri-vowels

汉语拼音参考IPA 音标参考X-SAMPA 音标参考备注
iaoiaʊiaU
iangiɑŋiAN
iuiɤʊi7U有些人偏好读作 ioʊ
iong (f)iʊŋiUN如“穷”慢读
ianiɛniEn
ingiɯŋiMN南方口音更偏好读作 iŋ
uaiuaɪuaI
uanuanuan
uanguɑŋuAN
uiueɪueI
unuənu@n
uenguɤŋu7N
iong (p)yʊŋyUN如“永”快读
üanyɛnyEn如“远”,北方口音更偏好读作 yan
ünyinyin如“云”

儿化音 R-endings

汉语拼音参考IPA 音标参考X-SAMPA 音标参考备注
oror\
e-erɤɹ7r\不是 ɑɹ,ɑɹ 已在前面列出
ehrer\
ihrɯɹMr\
urur\
üryr\

唇化鼻音 M-endings (语速快的场合)

汉语拼音参考IPA 音标参考X-SAMPA 音标参考备注
amamam
amgɑmAm
omgomom
eməm@m
emgɤm7m
imimim
üm (p)ymym
iomgiʊmiUm
iamgiɑmiAm
iamiɛmiEm
uamuamuam
uamguɑmuAm
umuəmu@m
uemguɤmu7m
üm (f)yimyim
当快读时,i u 变为 j w,儿化音与前面一个元音连读,p pʰ m 之前的鼻音变为唇化鼻音,鼻音前的元音变为鼻音化元音。

可以使用我的 Pinyin2XSampa 程序将拼音转换成 X-SAMPA。

论交互设计师的英文素养

很多 Web App 都会提供第三方调用的 API,在 API 的提示信息中如果有语法错误就贻笑大方了。
你不信?我来举几个例子:
{"error": "Hit sexy spam"} ——来自百度
{"error": "Wrong verify code"} ——来自腾讯
{"error": "Apps is not exists"} ——来自哔哩哔哩
交互设计师的英文素养很重要啊。
下面给出我的参考翻译
百度那例:Hit porn filter
腾讯那例:Wrong Captcha
哔哩哔哩那例:App does not exist