brailcom/speechd

`GenericMaxChunkLength` causes incomplete multibyte characters

開放

#806 建立於 2023年1月18日

 (4 則留言) (0 個反應) (0 位負責人)C (86 個分叉)auto 404
buggood first issuehelp wanted

倉庫指標

星標
 (325 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

Steps to reproduce

Create /etc/speech-dispatcher/modules/test.conf

# GenericMaxChunkLength 300
GenericExecuteSynth "echo $DATA >> /tmp/tts.log"

GenericLanguage "en" "en" "utf-8"
GenericLanguage "zh" "zh" "utf-8"

AddVoice "en" "male1" "voice1"

Add configuration to /etc/speech-dispatcher/speechd.conf

AddModule "test-generic"  "sd_generic" "test.conf"

Restart speech-dispatcher and use test-generic

$ sudo killall speech-dispatcher

$ spd-say -o test-generic "ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇"

Obtained behavior

$ cat /tmp/tts.log
ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇〇〇〇〇〇〇〇ab〇〇〇�
��〇〇〇〇〇〇

Passing incomplete multibyte characters to external commands is likely to not work properly, and subsequent chunks will not even be recognized as UTF-8 strings.

Expected behavior

Do not break down multibyte characters.

The string should be broken down into chunks of the specified length in characters (not bytes).

Behavior information

speech-dispatcher.log

Distribution

Debian

Version of Speech-dispatcher

0.11.4

貢獻者指南