2007年11月6日

汉语拼音-国际音标转换工具

今天在这里找到一个汉语拼音-国际音标转换工具,这是我一直梦寐以求的工具。

汉语拼音:
a o e i u ü
bo po mo fo
de te ne le
ge ke he
ji qi xi
zi ci si
zhi chi shi ri
yi wu
ai ei ui ao ou iu ie üe er
an en in un ün
ang eng ing ong

国际音标:
a o ɤ i u y
puo pʰuo muo fuo
tɤ tʰɤ nɤ lɤ
kɤ kʰɤ xɤ
tɕi tɕʰi ɕi
tsɿ tsʰɿ sɿ
tʂʅ tʂʰʅ ʂʅ rʅ
i u
ai ei uei ɑu ou iou iɛ yɛ ər
an ən in un yn
ɑŋ əŋ iŋ uŋ


命令行界面程序 py2ipa.py
图形用户界面程序 gPY2IPA.py

以下为命令行程序使用方法:

Windows XP的用户,可以打开“开始->程序->附件->命令提示符”,或打开“开始->运行”,输入cmd命令后按“确定”,都会出现命令行窗口。如果Python解释器安装在C:\Python25的路径下,而py2ipa.py位于C:\MyPy目录中,那么这时就可以输入下面的命令来运行程序:

C:\Python25\python C:\MyPy\py2ipa.py

UNIX/Linux用户的控制台就是命令行界面,图形界面用户则需要打开一个终端窗口。正常情况下,用户不需要知道Python解释器的位置。再假定py2ipa.py位于~/路径。这时,也可以像Windows用户那样,将py2ipa.py作为参数传递给Python解释器来运行。但建议用户使用如下命令为py2ipa.py文件设置“可执行”属性,运行起来更方便:

chmod +x ~/py2ipa.py

这样,以后只需要直接执行~/py2ipa.py命令就可以了。

如果用户了解所用操作系统的技术细节,还有其他方法避免提供文件的路径。简明起见,下面在展示命令行操作时,均省略路径,只保留文件名。

前面给出的命令行操作,将触发py2ipa.py程序最基本的工作方式:

1. 从标准输入流(stdin)读取汉语拼音文稿;
2. 向标准输出流(stdout)写入经过转换得到国际音标文稿。

如果没有使用重定向操作符,stdin即键盘输入,stdout即控制台窗口。这样运行后,光标位于控制台中一个新空行的开头,等待用户用键盘输入汉语拼音文稿。可以输入一行或多行文稿(具体格式在后面的“文稿格式”一节有详细说明),全部完成后按回车键,然后按Ctrl+Z(Win)或Ctrl+D(UNIX)组合键输入一个文件结束符并回车。正常情况下,会看到转换的结果就在下面显示出来了。

然而,键盘通常很难完成大量文稿的输入,控制台窗口也很能无法正常显示国际音标。因此,多数情况下用户需要以磁盘文件作为输入/输出的起止存储载体。有很多文本编辑器可供编写及查看这两种文稿文件,从而保证各种实际任务的完成。

要保存输出的国际音标文稿结果,就是要将stdout重定向到磁盘文件。无论哪种操作系统,用户都可以在py2ipa.py后面加上一个>号和一个文件名:

python py2ipa.py >result.txt

这样,显示器的窗口中将看不到转换出来的国际音标文稿。如果指定路径下的输出文件已经存在,这时就会被新的内容覆盖。

还有一种“追加”方式,用两个>>号代替一个>号,新的内容会添补到原有文件之后。

要读取希望输入的汉语拼音文稿,可以将stdin重定向到一个既存的磁盘文件。无论哪种操作系统,用户都可以在py2ipa.py后面加上一个<号和一个文件名:

python py2ipa.py <pinyin.txt

这个pinyin.txt应当已经存储有编写好的汉语拼音文稿。

两个方向的重定向可以同时使用:

python py2ipa.py <pinyin.txt >result.txt

还有一种输入文件的格式,省略<号,等于将文件名当作一个普通命令行参数传递给程序:

python py2ipa.py pinyin.txt >result.txt

与stdin重定向不同,使用这种普通参数(文件名匹配式)可以一次指定输入多个文件。该参数会启动UNIX shell风格的glob匹配规则,利用通配符扩展文件输入的范围。Windows用户要注意,glob通配符比DOS通配符增加了诸如[0-9]的字符类表达式。另外,这样的参数可以同时使用多个,之间用空格隔开即可。输出的结果先后对应每一个输入的文件,依次呈现。

运行过程中,有可能某个匹配式匹配不到任何文件,或由于种种原因文件数据读取失败。然则每次出错时程序会向“标准错误流”(stderr)输出一行错误提示。如果使用了stdout重定向,错误提示是不会与结果的输出混到一起的。

py2ipa.py程序内置了简单的使用说明,执行以下命令就可以随时看到:

python py2ipa.py --help

注意:help前面有连续两道半角减号(-)。

没有评论: