Windows/TTS

Windows/TTS

使用 Windows 内置的 TTS 引擎

balcon (Balabolka)

推荐使用 Balabolka 这个工具

balcon -t "Hello, World"
balcon -id 0x0804 -t "你好,世界"
balcon -id 0x0804 -f file.txt
balcon -l  # 查看系统安装的 TTS 语音引擎列表

Windows 内置的 TTS 引擎:

"Microsoft David Desktop" - Adult,Male,en-US。Windows 11 en-US 版初始内置。
"Microsoft Zira Desktop" - Adult,Female,en-US。Windows 11 en-US 版初始内置。
"Microsoft Huihui Desktop" - Adult,Female,zh-CN。在 Settings - Language - 增加 Chinese (Simplified, China) 语言并下载安装 "Speech" 数据。
  • -id: 微软 Windows 的语言编码(Locale ID)。不指定则使用默认。
    • 0x0804 : zh-CN, PRC
    • 0x0404 : zh-TW, Taiwan
    • 0x0411 : ja-JP, Japan
    • 0x0409 : en-US, United States
  • -n "Microsoft Huihui Desktop" : 直接指定使用某个 TTS 引擎。
  • -f file.txt : 指定文本文件作为输入。文本文件编码可以是 UTF-8 with BOM 或 UTF-16 LE/BE with BOM,即必须带 BOM。

注:

  • balcon 命令会 block 直到 TTS 把语音说完。
  • "Microsoft David Desktop" (Windows 11 en-US 默认 TTS) 无法说中文,直接无声。
  • "Microsoft Huihui Desktop" 等 zh-CN 的 TTS 可以"说" English,但是发音是按字母的标准发音规则,并不准确。

voice.exe

voice.exe -l # list available tts
voice.exe -v 100 "Hello World"
voice.exe -n "Microsoft Huihui Desktop" "你好,世界"
  • -v volume : 音量(0-100)
  • -n name : 指定 TTS 名称

远程播放 Windows TTS

在 Linux 机器上使用 ssh 远程连接 Windows 的 OpenSSH Server 并播放 TTS:

say.sh

#!/bin/sh

IP=192.168.1.40
COMMAND="voice.exe -n \"Microsoft Huihui Desktop\" $1"
ssh -t $IP "$COMMAND"

say.sh "Hello, World"

注意:

  • 用 ssh host command 这种方式远程连接到 Windows 的 OpenSSH Server 然后用 voice.exe / balcon 播放声音时必须指定 -t 参数。否则会有问题(如果不加 -t, voice.exe 执行时直接卡住;而 balcon 命令执行成功但实际无声)。
  • 推荐使用 voice.exe。测试 balcon 在某些环境(说的就是 OpenWrt 里那个弱智 dropbear 带的 ssh client)的 ssh 里运行时会有问题,命令成功执行,但是实际没有声音(ssh 已经加了 -t 参数)。

Last update: 2022-06-23 03:58:25 UTC