Como definir opções de comandos chamados pelo navegador?

3

Atualmente, quando a Linguagem de marcação de síntese de fala (SSML) é definida como em% propriedadetext da instância SpeechSynthesisUtterance em Chromium ou Firefox Os navegadores da web SSML não são analisados em * nix, conforme refletido na saída de áudio de speechSynthesis.speak() de chamada.

Procurando o código-fonte dos navegadores speech-dispatcher parece ser chamado por .speak() onde spd-say ou espeak , se configurado para tal, poderia ser chamado por speech-dispatcher .

spd-say tem uma opção x

-x, --ssml          Set SSML mode on (default: off)

espeak tem uma opção m

-m     Interpret SSML markup, and ignore other < > tags

Criei um arquivo de configuração de usuário para speech-dispatcher usando

spd-conf -u

A documentação afirma que o arquivo de configuração do usuário pode ser usado para definir parâmetros para clientes específicos

4.1.6 Parameter Settings Commands

The following parameter setting commands are available. For configuration and history clients there are also functions for setting the value for some other connection and for all connections. They are listed separately below.

C API function: int spd_set_data_mode(SPDConnection *connection, SPDDataMode mode) Set Speech Dispatcher data mode. Currently, plain text and SSML are supported. SSML is especially useful if you want to use index marks or include changes of voice parameters in the text.

mode is the requested data mode: SPD_DATA_TEXT or SPD_DATA_SSML.

Perguntas

  1. Como definir a opção padrão de um ou ambos os comandos -x para spd-say e -m para espeak em ~/.config/speech-dispatcher/speechd.conf para os clientes Chromium e Firefox quando .speak() é chamado?

  2. Como ajustar o código-fonte em Chromium e Firefox os navegadores definem as opções -x ou -m por padrão para o conjunto de texto na propriedade SpeechSpeechSynthesisUtterance text que é passado para window.speechSynthesis.speak() ?

por guest271314 30.12.2017 / 21:40

1 resposta

1

Uma maneira alternativa que geralmente funciona: Renomeie o binário / binários, escreva um script de wrapper com o nome original que chama os binários renomeados e inclua as opções desejadas. Hacky, mas possivelmente mais simples. (Se você não está acostumado a programar a shell, procure $* ).

Outra maneira hacky é substituir o nome das chamadas binárias no binário do navegador pelo nome do script wrapper; Desta forma, você mantém os nomes padrão.

A desvantagem é que você deve refazer isso se atualizar seu navegador, embora seja programável com grep e dd nas linhas de

grep -FobUa 'spd-say' browser_binary
echo -n 'spd-wrp' | dd bs=1 of=browser_binary seek=12345 conv=notrunc

em que spd-wrp é o nome do script wrapper e 12345 da posição em que o grep o encontrou. Use variações para várias ocorrências, etc., conforme apropriado para o seu binário.

    
por 12.01.2018 / 13:38