标签归档:esound

Ubuntu 10.04 安装 Reciteword 支持 Alsa 发声

在 Ubuntu 上安装 Reciteword 的时候我们可能都曾遇到过 esound 发声的问题,之前有过一篇文章介绍了如何解决 esound initialization failed 的问题,文章地址在 这里

因为 Ubuntu 默认的软件混音选择的是 alsa 而不是 esound,所以会有一些问题,在上面提到的那篇文章中也列出来了一些。然后看到网上有很多人提到一个 reciteword-alsa 版本,那就下下来试试看吧。

下载地址在 这里 ,将 reciteword-alsa.tar.gz 下载下来,使用 tar -xzvf reciteword-alsa.tar.gz 解压到当前目录。

之后就是准备 reciteword 的源码了,源码可以从 这里 找到下载,普通的 esound 版本编译方法在 这里 有非常详尽的 wiki 页面 ,当然我们并不需要 esound 的版本,所以接下来的事情才是我们想要做的。

1. 解压下下来的源码到当前路径,tar -xjvf reciteword-0.8.4.tar.bz2

2. 进入解压后的目录,cd reciteword-0.8.4

3. 将 alsa 版本的补丁打上,patch -p1 -i ../reciteword-alsa/reciteword-alsa.patch

4. 开始编译,./configure –prefix=/usr/

5. make

6. sudo make install

7. 接下来的所有步骤就是下载书本和字典,所有下载均可以从 这个页面 下载到,下载的都是 tar.bz2 包。以下步骤参考了 这个 wiki 页面

课本的安装:

这样我们就完成了所有的安装程序,到 Applications->Education->Reciteword 中启动程序吧。上个效果图。

Ubuntu 10.04 Reciteword 发声问题解决方法

之前在学校时候学习使用 Ubuntu 时使用过一个非常优秀的软件那就是 Reciteword, 俗称黑客背单词,认识这款软件是因为自己在 Ubuntu 下使用的字典软件是 stardict,这两款软件的作者是同一个,作者名字叫 胡正

最近一段时间里工作上和家里都使用的 Ubuntu,又想起了这款优秀的软件,那么好吧,我们这就开始安装吧, 这里 有一篇文章非常的详细,你只要按照这个流程安装,肯定成功。

但是在安装之后我们很有可能碰到不能正常发声的问题,那么我们如何解决这个问题呢?我在网上搜了一些相关的资料,自己一一尝试验证之后,发现这个法子很不错。

那就是在启动 reciteword 命令前,加上 esound -noterminate -nobeeps &,也就是在终端中启动 reciteword 的命令应该是这样的 esound -noterminate -nobeeps & reciteword,但是这样肯定是不方便的。那么我们可以这么做,也就是通过编辑/etc/esound/esd.conf 文件来达成目的

例如我的/etc/esound/esd.conf 文件内容如下:

[esd]

# autospawning is not recommended, since it can’t really be done
# right.  If you want your login session to be using a sound daemon,
# you should start it from the session controller, not some random
# app inside.
auto_spawn=1
spawn_options=-noterminate -nobeeps -as 2
spawn_wait_ms=100
# default options are used in spawned and non-spawned mode
default_options=2

修改该文件之后再次启动 reciteword,就能正常发声了,但是还有一个问题,那就是你单击软件界面中的朗读按钮,软件并不会正常的朗读单词,在测试的过程中,如果你输入单词的速度很快的话,软件发出的那种老式打字机金属敲击的声音并不能跟上你的节奏,我想应该是 esound 自动多音频流播放的问题吧,解决方案参考了 这篇文章这篇文章。

听说有 alsa 版本的,哪天试一试看看如何,嘿嘿,希望本文能对你有所帮助。

==========================更新=============================

在 Ubuntu 10.04 下编译可能会出现一个错误

在 bookfile.cpp 文件中找到 原来的 tmp1 = strstr (str1, str2);