설명
chrome.ttsEngine
API를 사용하여 확장 프로그램으로 텍스트 음성 변환(TTS) 엔진을 구현하세요. 확장 프로그램이 이 API를 사용하여 등록하면 확장 프로그램 또는 Chrome 앱에서 tts
API를 사용하여 음성을 생성할 때 음성으로 안내할 발화가 포함된 이벤트 및 기타 매개변수를 수신합니다. 그러면 확장 프로그램에서 사용 가능한 모든 웹 기술을 사용하여 음성을 합성 및 출력하고 이벤트를 호출 함수로 다시 전송하여 상태를 보고할 수 있습니다.
권한
ttsEngine
개념 및 사용법
확장 프로그램은 자체적으로 음성 엔진으로 등록될 수 있습니다. 이렇게 하면 호출의 일부 또는 전부를
tts.speak()
및 tts.stop()
와 같은 함수에 추가하고 대체 구현을 제공합니다.
확장 프로그램은 오디오 스트리밍 등 사용 가능한 모든 웹 기술을 무료로 사용하여 음성을 제공합니다.
서버에서 HTML5 오디오를 가져옵니다. 확장 프로그램은
음성과 함께 텍스트를 표시합니다. 예를 들어 자막을 팝업에 표시하거나 로그 메시지로
원격 서버입니다.
TTS 엔진을 구현하려면 확장 프로그램에서 'ttsEngine'을 선언해야 합니다. 모든 권한을 선언한 다음 다음과 같이 확장 프로그램 매니페스트에서 제공하는 음성을 사용할 수 있습니다.
{
"name": "My TTS Engine",
"version": "1.0",
"permissions": ["ttsEngine"],
"tts_engine": {
"voices": [
{
"voice_name": "Alice",
"lang": "en-US",
"event_types": ["start", "marker", "end"]
},
{
"voice_name": "Pat",
"lang": "en-US",
"event_types": ["end"]
}
]
},
"background": {
"page": "background.html",
"persistent": false
}
}
확장 프로그램에서 음성을 여러 개 지정할 수 있습니다.
voice_name
매개변수는 필수 항목입니다. 이름은 해당 광고 단위를 식별할 수 있도록
사용되는 엔진이 있습니다. 드물지만 두 개의 확장 프로그램이 음성을 등록하는 경우
클라이언트가 합성을 수행해야 하는 확장 프로그램의 ID를 지정할 수 있습니다.
lang
매개변수는 선택사항이지만 적극 권장됩니다. 대부분의 경우 음성은 음성을 합성할 수 있습니다.
한 가지 언어로만 표현할 수 있습니다. 엔진이 둘 이상의 언어를 지원하는 경우 쉽게
언어마다 별도의 음성을 등록할 수 없습니다. 드물지만 단일 음성을 사용해
두 개 이상의 언어를 처리할 수 있는 경우 두 개의 개별 음성을 나열하고
동일한 로직을 내부적으로 사용합니다 그러나 모든 음성의 발화를 처리하는 음성을 생성하려는 경우
확장 프로그램의 매니페스트에서 lang
매개변수를 제외하세요.
마지막으로, 엔진이 이벤트를 전송하여 클라이언트를 업데이트할 수 있는 경우 event_types
매개변수가 필요합니다.
몇 가지 간단한 예가 있습니다. 최소한 'end'
이벤트 유형을 지원하여
을 사용하지 않는 것이 좋습니다. 그렇지 않으면 Chrome에서 대기열에 추가된 발화를 예약할 수 없습니다.
로드된 확장 프로그램은
chrome.ttsEngine.updateVoices
(
updateVoices
는 카멜 표기법을 사용합니다(예: voiceName
: 매니페스트 파일을 사용하는 매니페스트 파일과 달리
voice_name
).
전송할 수 있는 이벤트 유형은 speak()
메서드가 전송하는 이벤트 유형과 일치합니다.
수신:
'start'
: 엔진이 발화를 말하기 시작했습니다.'word'
: 단어 경계에 도달했습니다.event.charIndex
를 사용하여 현재 음성을 확인합니다. 있습니다.'sentence'
: 문장 경계에 도달했습니다.event.charIndex
를 사용하여 현재 위치를 지정할 수 있습니다.'marker'
: SSML 마커에 도달했습니다.event.charIndex
를 사용하여 현재 음성을 확인합니다. 있습니다.'end'
: 엔진에서 발화가 완료되었습니다.'error'
: 엔진 관련 오류가 발생하여 이 발화를 할 수 없습니다. 더 전달하기event.errorMessage
에 있습니다.
'interrupted'
및 'cancelled'
이벤트는 음성 엔진에서 전송되지 않습니다. Kubernetes는
Chrome에서 자동으로 실행됩니다.
텍스트 음성 변환 클라이언트는 다음을 호출하여 확장 프로그램의 매니페스트에서 음성 정보를 가져올 수 있습니다.
tts.getVoices
(아래 설명과 같이 음성 이벤트 리스너를 등록했다고 가정)
음성 이벤트 처리
클라이언트 요청에 음성을 생성하려면 확장 프로그램이 두 클라이언트 모두에 대한 리스너를 등록해야 합니다.
onSpeak
및 onStop
const speakListener = (utterance, options, sendTtsEvent) => {
sendTtsEvent({type: 'start', charIndex: 0})
// (start speaking)
sendTtsEvent({type: 'end', charIndex: utterance.length})
};
const stopListener = () => {
// (stop all speech)
};
chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);
지정된 음성 요청을 확장 프로그램에 전송할지 여부는 전적으로
확장 프로그램이 매니페스트에 지정된 음성 매개변수를 지원하고 등록했는지 여부
onSpeak
및 onStop
리스너 즉, 기한 연장이 되면 광고 게재가 시작될 수 있으므로
이를 처리할지 동적으로 결정합니다.
유형
AudioBuffer
오디오 버퍼 및 관련 데이터를 포함하는 매개변수입니다.
속성
-
audioBuffer
배열 버퍼
텍스트 음성 변환 엔진의 오디오 버퍼입니다. 오디오 스트림 옵션은 정확히 audioStreamOptions.bufferSize가 길고, audioStreamOptions.sampleRate에서 모노로 인코딩되고, 선형 pcm, 32비트 부호 있는 부동 소수점 수(자바스크립트의 Float32Array 유형)로 인코딩되어야 합니다.
-
charIndex
숫자 선택사항
이 오디오 버퍼와 연결된 문자 색인입니다.
-
isLastBuffer
불리언 선택사항
이 오디오 버퍼가 말하는 텍스트의 마지막인 경우 true입니다.
AudioStreamOptions
엔진에서 생성될 것으로 예상되는 오디오 스트림 형식을 포함합니다.
속성
-
bufferSize
숫자
오디오 버퍼 내의 샘플 수입니다.
-
sampleRate
숫자
오디오 버퍼에서 예상되는 샘플링 레이트입니다.
SpeakOptions
tts.speak() 메서드에 지정된 옵션입니다.
속성
-
gender
VoiceGender (선택사항)
<ph type="x-smartling-placeholder"></ph> Chrome 92 이후 지원 중단됨성별은 지원 중단되었으며 무시됩니다.
합성된 음성의 음성 성별입니다.
-
lang
문자열(선택사항)
합성에 사용되는 언어로, language-region 형식입니다. 예: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
투구
숫자 선택사항
말하기 음조는 0과 2 사이로, 0이 가장 낮고 2가 가장 높습니다. 1.0은 이 음성의 기본 높낮이에 해당합니다.
-
요금
숫자 선택사항
이 음성의 기본 속도를 기준으로 한 말하기 속도입니다. 1.0이 기본 속도이며 일반적으로 분당 180~220단어입니다. 2.0은 기본 속도의 2배이며 0.5는 절반입니다. 이 값은 0.1 이상, 10.0 이하여야 합니다. 음성이 이 전체 속도를 지원하지 않는 경우 오류를 반환해서는 안 됩니다. 대신 음성이 지원하는 범위로 속도를 자르세요.
-
voiceName
문자열(선택사항)
합성에 사용할 음성 이름입니다.
-
볼륨
숫자 선택사항
말하기 볼륨은 0 이상 1 이하입니다. 0이 가장 낮고 1이 가장 높으며 1이 가장 높으며 기본값은 1.0입니다.
VoiceGender
성별은 지원 중단되었으며 무시됩니다.
열거형
"남성"
"여성"
메서드
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
음성 목록을 업데이트하기 위해 엔진에서 호출합니다. 이 목록은 이 확장 프로그램의 매니페스트에 선언된 모든 음성보다 우선 적용됩니다.
매개변수
-
목소리
TtsVoice[]
음성 합성에 사용할 수 있는 음성을 나타내는
tts.TtsVoice
객체의 배열입니다.
이벤트
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
선택사항: 엔진이 일시중지 이벤트를 지원하는 경우 이벤트 다시 시작 또는 중지 이벤트를 수신할 때까지 현재 음성으로 안내되는 발화를 일시중지해야 합니다(있는 경우). 또한 정지 이벤트는 일시중지 상태를 지워야 합니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
선택사항: 엔진이 일시중지 이벤트를 지원하는 경우 이벤트 재개도 지원해야 현재 발화를 계속 말할 수 있습니다(있는 경우). 또한 정지 이벤트는 일시중지 상태를 지워야 합니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.() => void
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
사용자가 tts.speak()를 호출하고 이 확장 프로그램의 매니페스트 음성 중 하나가 옵션 객체와 가장 먼저 일치할 때 호출됩니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
발화
문자열
-
옵션
-
sendTtsEvent
함수
sendTtsEvent
매개변수는 다음과 같습니다.(event: tts.TtsEvent) => void
-
event
이 발화의 상태를 나타내는 텍스트 음성 변환 엔진의 이벤트입니다.
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
사용자가 tts.speak()를 호출하고 이 확장 프로그램의 매니페스트 음성 중 하나가 옵션 객체와 가장 먼저 일치할 때 호출됩니다. ttsEngine.onSpeak와는 다른 점은 Chrome이 오디오 재생 서비스를 제공하고 tts 이벤트 전달을 처리한다는 점입니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
발화
문자열
-
옵션
-
audioStreamOptions
-
sendTtsAudio
함수
sendTtsAudio
매개변수는 다음과 같습니다.(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
오디오 버퍼 및 관련 데이터를 포함하는 매개변수입니다.
-
-
sendError
함수
Chrome 94 이상 를 통해 개인정보처리방침을 정의할 수 있습니다.sendError
매개변수는 다음과 같습니다.(errorMessage?: string) => void
-
errorMessage
문자열(선택사항)
오류를 설명하는 문자열입니다.
-
-
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
tts.stop으로 전화를 걸었을 때 이 확장 프로그램이 말하고 있을 때 실행됩니다. 확장 프로그램이 onStop 호출을 수신하고 음성이 이미 중지되었다면 오류가 발생하지 않아야 합니다. 음성이 일시중지 상태인 경우 일시중지 상태가 취소됩니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.() => void