如何在 Android 手机中安装了 Ubuntu Base 镜像的 Foliate 电子书阅读器的情况下使用谷歌文本转语音?

如何在 Android 手机中安装了 Ubuntu Base 镜像的 Foliate 电子书阅读器的情况下使用谷歌文本转语音?

我有已安装为 Android 手机安装 Ubuntu Base 镜像后,使用 Foliate 电子书阅读器。

我想使用gTTs,它使用 Google 语音转文本服务,因为它的声音比espeak或好得多festival。我有启用声音在 Termux 中。脚本叶状维基使用play来自 的命令sox。但是,由于某种原因,sox似乎无法工作,因为它找不到音频设备(似乎 sox 使用 ALSA,但只有 Pulseaudio 可以与 Android 中的 Termux 配合使用)。

如何将 gTT 与 Foliate 一起使用?

答案1

这个答案才不是需要已 root 权限的 Android 设备。 第一的启动 Ubuntu在 Termux。

  1. gTTs使用 pip安装。

    apt install python3-pip
    pip3 install gTTs
    
  2. 安装 VLC(我们将使用 VLC 而不是sox)。

    apt install vlc
    

    (mpv 不起作用,因为 ffmpeg 似乎有一个漏洞

  3. Ubuntu 基础镜像默认以 root 用户身份登录。但是,vlc拒绝以 root 身份运行。让我们允许 VLC 以 ​​root 身份运行,如下所示这个答案

    sed -i 's/geteuid/getppid/' /usr/bin/vlc
    
  4. 现在让我们修改一下剧本在 Foliate wiki 中与 VLC 配合使用。

    最初的剧本是

    #!/bin/bash
    gtts-cli -l $FOLIATE_TTS_LANG_LOWER --file /dev/stdin | play -t mp3 - &
    trap 'kill $!; exit 0' INT
    wait
    

    我发现$FOLIATE_TTS_LANG_LOWER经常会创建 gTT 目录中不存在的语言(例如en-gb)。由于我主要阅读英文电子书,因此我替换了$FOLIATE_TTS_LANG_LOWER--> en

    此外,默认情况下,VLC 在播放媒体文件后不会退出。因此,Foliate 无法在读出文本时自动翻页。我们需要使用选项运行 VLC 的命令行版本 ( cvlc) --play-and-exit

    修改后的脚本为,

     #!/bin/bash
     gtts-cli -l en --file /dev/stdin | cvlc --play-and-exit - &
     trap 'kill $!; exit 0' INT
     wait
    

    将此脚本保存在中/usr/local/bin/gtts,并将其标记为可执行文件。

     chmod +x /usr/local/bin/gtts
    
  5. /usr/local/bin/gtts打开 Foliate 偏好设置,然后在文本转语音字段中输入命令。

相关内容