私のマイクでSpeechRecognitionを使用していて、speechSynthesisでデータが返されています。SpeechRecognitionでspeechSynthesis音声を変更します。
私は、このページを読み上げる際に女性の声にして、「男性の声」と言って男性の声に切り替えることができるようにしたいと考えています。私は後で反対をすることができるようにしたい - それは男性の声に設定すると、 "女性の声"と言うと、それは戻って切り替える。
私は現在それを行うことができますが、男性の声は、声が保存されていないので一度しか話されず、引数として渡されます。したがって、その後、話次のことは、バック女性の声で次のようになります。
let voices = [];
window.speechSynthesis.onvoiceschanged = function() {
voices = window.speechSynthesis.getVoices();
};
function loadVoices(message, voice) {
const msg = new SpeechSynthesisUtterance();
msg.voice = voice || voices[48]; // female voice
msg.text = message;
speechSynthesis.speak(msg);
};
// asking for voice change here
if (transcript.includes('male voice')) {
let message = ('I am now a man');
let voice = voices[50]; // male voice
loadVoices(message, voice);
}
私は、このようなグローバル変数へのmsg.voice
ポイントそのグローバル変数を持ってみましたが、これは動作しません、プラスの声が(デフォルトに戻ります電子声):私はloadVoices()
のvoiceGender
内部を宣言した場合
let voiceGender = voices[48];
function loadVoices(message) {
const msg = new SpeechSynthesisUtterance();
msg.voice = voiceGender // now a variable pointing to another.
msg.text = message;
speechSynthesis.speak(msg);
};
if (transcript.includes('male voice')) {
let message = ('I am now a man');
let voiceGender = voices[50]; // changing the global variable
loadVoices(message);
}
、その後、私は別の関数内にあるif
からそれを変更することはできません。
これを実現するにはどうすればJavascript構造を設定できますか?