显示标签为“patch”的博文。显示所有博文
显示标签为“patch”的博文。显示所有博文

星期四, 六月 28, 2007

Doxygen生成UTF8编码的中文文档

Doxygen生成UTF8编码的中文文档

最近开始使用Doxygen来写文档。发现它还真是个好东西。
而且还认识了Graphviz,用这个来画类图不费劲。呵呵。

Doxygen可以生成中文文档。但默认的只能是gb2312的编码。
最新的1.5.1版本似乎也是这样。这和我的系统编码不一致,有
点不和谐。我用的是UTF8编码。但还是有办法修改的。改源码
吧。

下载源码,
apt-get source doxygen
cd doxygen-1.4.7/src/
iconv -f cp936 -t utf8 translator_cn.h -o translator_utf8.h
sed -e 's/gb2312/utf8/' translator_utf8.h -o translator_cn.h

原理就是把源码中的中文翻译的那个源码转编码为utf8,然后在html
输出编码里把gb2312改成utf8.
现在可以编译。
回头把生成的Doxyfile文件中的OUTPUT_LANGUAGE改成Chinese
就可以生成中文文档了。当然你的注释得用utf8编码的中文写。

顺便得到一个好玩的命令:
apt-rdepends -d apt |dot -Tpng -o apt.png
试试,看看生成的图片是什么~

星期三, 四月 25, 2007

ubuntu6.06下gnome录音机调整

虽然ubuntu7.04已经发布。但是6.06是LTS,也就是长期支持版本。所以还是会在一段时间内被人使用。6.06下面的gnome版本为2.14。这个版本的gnome里的录音程序有个本地化的bug。究竟是什么bug呢?你最好打开录音机试试,如果你的gnome录音机没有问题请略过本文章。



取自gnome中国GNOME 中的录音机的一段:

gnome-sound-recorder 2.16 存在本地化的 bug, 因此直接启动后无法录音,你需要在英文环境下启动它,在命令行里执行: LANG= gnome-sound-recorder 即可。我还没有去研究中文环境(本地化环境)下为啥会有问题,估计是默认设置的文件名变成中文后导致无法生成正确的临时音频文件所致,还得看代码才能弄清 楚。





在这篇文章中可以得知,这个bug在2.16中仍然存在。作者最后升级更新后已经解决。但它并不是在ubuntu系统中。也就是说,在ubuntu系统中这个问题会一直存在。不知道新的7.04解决了没。



既然不能升级解决,那就改源码吧~ 其实很简单,重要的是,你有时间~

下载源码,录音机程序名叫gnome-sound-recorder,在包gnome-media中。



$apt-get source gnome-media

找到 gnome-media-2.14.2/grecord/src/gnome-recorder.c 文件。在文件中找到以下段落:





if (filename == NULL) {
/* Translator comment: untitled here implies that

* there is no active sound sample. Any newly

* name as default value. */
if (gsr_sample_count == 1) {

name = g_strdup (_("Untitled"));
} else {
name = g_strdup_printf (_("Untitled-%d"), gsr_sample_count);
}
++gsr_sample_count;






把其中的(_("Untitled")) 改成 ("Untitled"), _("Untitled-%d")改成 "Untitled-%d" .

保存文件。再进入gnome-media-2.14.2目录。执行通常的编译命令:

./configure &make ;

进入 grecorder目录 执行 sudo make install, 因为我们只是想安装gnome-sound-recorder命令而已。

运行前先把原来的gnome-sound-recorder删除。

rm /usr/bin/gnome-sound-recorder



上面的操作适用于 ubuntu 6.10。因为6.10的gnome 2.16也存在这个问题。



现在打开 gnome-sound-recorder已经可以保存和播放录音了。



这么简单的事也用不着打补丁了吧。自己改改就行了。而且我并没有去直接处理它本地化的bug。而是跳过了它。gnome-sound-recorder不能处理默认带有中文的文件名,那我就把默认的临时文件名的中文去除。反正是临时文件,中或英没有区别。



为啥这么简单的问题都要写一篇博文哩? alway by my way , 这世界总有一些人有一些特殊的要求。就像我,也许还有某个人。

星期五, 四月 20, 2007

sdcv 合成语音补丁

sdcv是星际译王的命令行版本。大多数时候我其实是用sdcv来工作的。毕竟想查个单词只要到

终端里打个命令就好了。开个图形的stardict太费时了。而终端,对于用Linux的人来说是开机必

开的程序。



哈哈,cyclone团队的Wind又来贡献补丁了。请下载aplay_tts_sdcv.patch

基于源码sdcv.0.4.2; 



补丁工作模式:添加了-s参数以启动声音服务。sdcv默认会搜索真人语音库里的文件,如果没有才

会用festival合成语音。没错了。这个程序还是基于festival的。请注意了。

例子: sdcv -s word 

程序会列出word单词的意思,并且会将它的读音读出来。如果语音库没这个单词就是合成的声音了。



sdcv默认会在/usr/local/share里搜索WyabcdRealPeopleTTS,所以如果你是将语音安装在/usr/share

则请在/usr/local/share/里做一个链接,以便sdcv能找到。这点不完善的地方以后也许会改进。要是你有空

也可以改正。



还是注意:你必须保证你的系统里有语音合成的festival 软件。安装方法参考Ubuntu 之玩转语音合成(Festival)





再次:

无责任声明:希望你能理解GPL。发挥DIY的精神。如果本补丁对你造成了任何后果或困惑本人和Wind对此不负任何责任。

星期四, 四月 19, 2007

星际译王合成语音发声补丁

星际译王使用的语音库 WyabcdRealPeopleTTS 只有一百多M。这样说来查询的单词还有很多是不能发出

声音的。 我以前也曾写过一篇 Ubuntu 之玩转语音合成(Festival) 的文章。也许可以利用语音合成

来为星际译王里语音库没有的单词发声。



当然你觉得不需要的话也行。但世界总有一些人有特别的需求。例如我,Wind。



嗯。补丁来了tts-stardict.patch。cyclone团队的Wind贡献的。

基于stardict.2.4.8。



补丁工作模式: 程序默认会搜索语音库的单词音频文件,在找不到的时候才会利用festival合成单词的语音。

当然festival合成的语音质量会有些差距。



注意:你必须保证你的系统里有语音合成的festival 软件。安装方法参考Ubuntu 之玩转语音合成(Festival)





无责任声明:希望你能理解GPL。发挥DIY的精神。如果本补丁对你造成了任何后果或困惑本人和Wind对此不负任何责任。