LDOCE5 查看器的声音问题(使用 Gstreamer 以 Python3 编写)

LDOCE5 查看器的声音问题(使用 Gstreamer 以 Python3 编写)

我已经安装LDOCE5 查看器按照说明在 Ubuntu 20.04 上这里。 总之:

  1. 安装一些依赖项:

    sudo apt-get install git make python pyqt5-dev-tools python3-pyqt5 \
    python3-pyqt5.qtwebkit python3-lxml python3-whoosh  qtgstreamer-plugins-qt5
    
  2. python3.8在 Ubuntu 20.04 上安装更多依赖项:

    sudo apt-get install python3-pip python3-setuptools python3-distutils
    
  3. 将 ldoce5viewer-pyqt5 下载到 ~/Downloads:

    cd ~/Downloads && git clone https://github.com/purboo/ldoce5viewer-pyqt5.git
    
  4. 打开下载文件夹中的Makefile,并在第2行更改pythonpython3

    gedit ~/Downloads/ldoce5viewer-pyqt5/Makefile
    
  5. ldoce5viewer-pyqt5 中有一个名为的过时库,cgi.escape() 该库已从 python3.8 中删除。这个库在三个文件中使用。为了解决这个问题,我们需要更改cgi为以下三个文件中html看到的位置 :from cgi import escape

    gedit ~/Downloads/ldoce5viewer-pyqt5/ldoce5viewer/ldoce5/transform.py 
    gedit ~/Downloads/ldoce5viewer-pyqt5/ldoce5viewer/qtgui/indexer.py 
    gedit ~/Downloads/ldoce5viewer-pyqt5/ldoce5viewer/ldoce5/extract.py 
    
  6. 该软件的声音播放器部分存在问题。根据这个答案,为了解决这个问题,我们可以打开以下文件并更改

    'appsrc.emit('push-buffer', Gst.Buffer.new_wrapped(self._data[:size]))'
    

    'appsrc.emit('push-buffer', Gst.Buffer.new_wrapped(self._data[:size].data()))'
    

    在第 114 行:

    gedit ~/Downloads/ldoce5viewer-pyqt5/ldoce5viewer/qtgui/utils/soundplayer.py
    
  7. 最后一步:

    make && sudo make install
    

现在可以在已安装的应用程序中发现该软件(按键Super并搜索 ldoce5)。

安装成功,词典基本可用。唯一的问题是单击句子或单词的发音不会播放任何内容。软件中与声音相关的部分位于以下文件中:

gedit ~/Downloads/ldoce5viewer-pyqt5/ldoce5viewer/qtgui/utils/soundplayer.py

我尝试调试该问题并确认:

  1. 软件中使用 Gstreamer 播放声音(代码中还有其他替代方案,但在 Ubuntu 20.04 中未使用它们)

  2. Gstreamer 已安装在 Ubuntu 上,并且按照官方说明

  3. 声音的 mp3 文件存在,可以下载(GUI 中有一个下载选项,如下面的屏幕截图所示):

在此处输入图片描述

我只是不知道为什么单击声音按钮(蓝色或红色图标)时没有播放声音。每次单击其中一个时,都会触发类play的方法。没有错误,我可以确认方法的最后一行()也已到达。我无法进一步调查该问题。我非常感谢任何帮助解决此问题的人。GstreamerBackend(Backend)soundplayer.pyself._player.set_state(Gst.State.PLAYING)

相关内容