brailcom/speechd

`GenericMaxChunkLength` causes incomplete multibyte characters

オープン

#806 opened on 2023/01/18

 (4 件のコメント) (0 件のリアクション) (0 人の担当者)C (86 件のフォーク)auto 404
buggood first issuehelp wanted

Repository metrics

Stars
 (325 個のスター)
PR merge metrics
 (PR metrics pending)

説明

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

コントリビューターガイド