현재 언제음성 합성 마크업 언어text
(SSML)이 속성 으로 설정되었습니다.SpeechSynthesisUtterance
인스턴스는 다음 위치에 있습니다.크롬또는파이어폭스 브라우저웹 브라우저에서는 오디오 출력에 표시된 것처럼 SSML이 *nix에서 구문 분석되지 않습니다.speechSynthesis.speak()
부르다.
브라우저의 소스 코드 찾아보기speech-dispatcher
.speak()
다음 중 하나 에 의해 발생한 것 같습니다 spd-say
.espeak
, 그렇게 하도록 구성된 경우 에서 호출할 수 있습니다 speech-dispatcher
.
spd-say
x
옵션 이 있습니다
-x, --ssml Set SSML mode on (default: off)
espeak
m
옵션 이 있습니다
-m Interpret SSML markup, and ignore other < > tags
speech-dispatcher
사용을 위해 생성된 사용자 프로필
spd-conf -u
설명서에는 사용자 프로필을 사용하여 특정 클라이언트에 대한 매개변수를 설정할 수 있다고 명시되어 있습니다.
4.1.6 매개변수 설정 명령
다음과 같은 매개변수 설정 명령을 사용할 수 있습니다. 구성 및 기록 클라이언트의 경우 특정 다른 연결 및 모든 연결에 대한 값을 설정하는 기능도 있습니다. 아래에 나열되어 있습니다.
C API 기능:
int spd_set_data_mode(SPDConnection *connection, SPDDataMode mode)
음성 디스패처 데이터 모드를 설정합니다. 현재 일반 텍스트와 SSML이 지원됩니다. SSML은 색인 표시를 사용하거나 텍스트의 음성 매개변수에 대한 변경 사항을 포함하려는 경우 특히 유용합니다.mode는 요청된 데이터 모드입니다.
SPD_DATA_TEXT
또는SPD_DATA_SSML
.
질문
호출 시 클라이언트 Chromium 및 Firefox 브라우저에 대한
-x
forspd-say
및-m
for 명령espeak
중 하나 또는 둘 다에 대한 기본 옵션을 어떻게 설정합니까?~/.config/speech-dispatcher/speechd.conf
.speak()
소스 코드를 조정하는 방법크롬그리고파이어폭스 브라우저브라우저는 ?에 전달된 속성에 의해 설정된 텍스트 설정
-x
또는 옵션을 기본값으로 사용합니다.-m
SpeechSpeechSynthesisUtterance
text
window.speechSynthesis.speak()
답변1
일반적으로 작동하는 또 다른 접근 방식은 바이너리 이름을 바꾸고, 이름이 바뀐 바이너리를 호출하고 원하는 옵션을 포함하는 원래 이름으로 래퍼 스크립트를 작성하는 것입니다. Hacky이지만 아마도 더 간단할 것입니다. (쉘 프로그래밍에 익숙하지 않다면 확인해 보세요 $*
).
또 다른 해킹은 브라우저 바이너리의 바이너리 호출 이름을 래퍼 스크립트의 이름으로 바꾸는 것입니다. 이렇게 하면 표준 이름을 유지할 수 있습니다.
단점은 브라우저를 업데이트하면 이 작업을 다시 실행해야 한다는 것입니다. 단, 다음 스크립트를 사용하여 grep
작성할 수 있습니다.dd
grep -FobUa 'spd-say' browser_binary
echo -n 'spd-wrp' | dd bs=1 of=browser_binary seek=12345 conv=notrunc
spd-wrp
래퍼 스크립트의 이름은 어디에 있고 12345
grep이 이를 찾은 위치는 어디에 있습니까? 바이너리에 따라 변형 등을 여러 번 사용하십시오.