gpt4 book ai didi

javascript - 在 Android Webview 上选择文本转速度的语言

转载 作者:行者123 更新时间:2023-12-03 03:58:28 24 4
gpt4 key购买 nike

我搜索了好几个小时却没有得到真正的答案。

是否可以为文本转语音功能选择与默认语言不同的语言?

此代码在 PC 上的 Chrome 上完美运行,但在 Android 浏览器上不起作用:

$(function(){
if ('speechSynthesis' in window) {
speechSynthesis.onvoiceschanged = function() {
var $voicelist = $('#voices');

if($voicelist.find('option').length == 0) {
speechSynthesis.getVoices().forEach(function(voice, index) {
console.log(voice);
var $option = $('<option>')
.val(index)
.html(voice.name + (voice.default ? ' (default)' :''));

$voicelist.append($option);
});

$voicelist.material_select();
}
}

$('#speak').click(function(){
var text = $('#message').val();
var msg = new SpeechSynthesisUtterance();
var voices = window.speechSynthesis.getVoices();
msg.voice = voices[$('#voices').val()];
msg.rate = $('#rate').val() / 10;
msg.pitch = $('#pitch').val();
msg.text = text;

msg.onend = function(e) {
console.log('Finished in ' + event.elapsedTime + ' seconds.');
};

console.log(speechSynthesis);

speechSynthesis.speak(msg);
})
} else {
$('#modal1').openModal();
}
});
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/materialize/0.95.1/css/materialize.min.css">

<div class="container">
<div class="row">
<nav>
<div class="nav-wrapper">
<div class="col s12">
<a href="#" class="brand-logo">Text to speech example</a>
</div>
</div>
</nav>
</div>
<form class="col s8 offset-s2">
<div class="row">
<label>Choose voice</label>
<select id="voices"></select>
</div>
<div class="row">
<div class="col s6">
<label>Rate</label>
<p class="range-field">
<input type="range" id="rate" min="1" max="100" value="10" />
</p>
</div>
<div class="col s6">
<label>Pitch</label>
<p class="range-field">
<input type="range" id="pitch" min="0" max="2" value="1" />
</p>
</div>
<div class="col s12">
<p>N.B. Rate and Pitch only work with native voice.</p>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<textarea id="message" class="materialize-textarea"></textarea>
<label>Write message</label>
</div>
</div>
<a href="#" id="speak" class="waves-effect waves-light btn">Speak</a>
</form>
</div>

<div id="modal1" class="modal">
<h4>Speech Synthesis not supported</h4>
<p>Your browser does not support speech synthesis.</p>
<p>We recommend you use Google Chrome.</p>
<div class="action-bar">
<a href="#" class="waves-effect waves-green btn-flat modal-action modal-close">Close</a>
</div>
</div>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/materialize/0.95.1/js/materialize.min.js"></script>

非常感谢!!问候

最佳答案

嗯,经过搜索和搜索终于找到了解决方案,而且非常非常简单......

在 PC Chrome 中,语音的语言隐含在语音数据包中,但在移动 Chrome 中,必须在 SpeechSynthesisUtterance 对象中显式指定语言。

因此,对于示例,它可以添加行

  msg.lang = voices[$('#voices').val()].lang;

如果有人需要帮助,我已经准备好了。

问候。

关于javascript - 在 Android Webview 上选择文本转速度的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com