Node.JS読み取り可能ストリームへのJS音声合成

Aug 17 2020

JavaScriptの組み込みのテキスト読み上げ関数はSpeechSynthesis.speak()です。私はdiscord.jsを使用しており、音声合成をnode.jsの読み取り可能なストリームに変換して、音声チャネルへのブロードキャストとして再生できるようにしたいと考えています。

私が見つけたこのGitHubのレポをしかし、それは私のために動作しませんでしたし、私は100%確実ではないですが、私は、つらい時も(それを放送していた、と仮定したときに偉大されていない、それはTTSを記録しますテキストの大きな文字列を処理する)。

前述のコードの使用中に発生した主なエラーは次のとおりです。

The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.

そして

Uncaught TypeError: Cannot read property 'getUserMedia' of undefined

私の目標は、Googleのtts APIのようなものを避け、ネイティブJavaScriptを使用することです。音声合成をdiscord.jsで使用できる読み取り可能なストリームに変換することは可能ですか?もしそうなら、どのように?または、以前のリポジトリを使用する方法はありますか?私を助けてください、それは大いにありがたいです。

(また、discordにはメッセージを読むための組み込みのttsボタンがあることを私は知っています-これはまったく異なるもののためです)

回答

1 Luke Aug 17 2020 at 23:50

Web Speech API(SpeechSynthesis.speak())は、基盤となるOSまたはブラウザー合成の実装を使用し、Web AudioAPIを経由しません。そのGithubリポジトリは、実際にはシステムのマイクを使用して音声出力を録音します。ハックを除いて、それは良い考えではありません。コンテンツを生成するには、他の何かを使用する必要があります。おそらく、クロスブラウザーでnode.jsで直接機能するSay.jsですか?