以下HTML在第一次单击时在控制台中显示空数组:
<!DOCTYPE html>
<html>
<head>
<script>
function test(){
console.log(window.speechSynthesis.getVoices())
}
</script>
</head>
<body>
<a href="#" onclick="test()">Test</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在第二次单击中,您将获得预期的列表.
如果添加onload事件来调用此函数(<body onload="test()">),则可以在第一次单击时获得正确的结果.请注意,第一次调用onload仍然无法正常工作.它在页面加载时返回空,但后续工作.
问题:
由于它可能是测试版中的错误,我放弃了"为什么"的问题.
现在,问题是您是否要window.speechSynthesis在页面加载时访问:
speechSynthesis在页面加载时确保它会加载?背景和测试:
我正在测试Web Speech API中的新功能,然后我在我的代码中遇到了这个问题:
<script type="text/javascript">
$(document).ready(function(){
// Browser support messages. (You might need Chrome 33.0 Beta)
if (!('speechSynthesis' in window)) {
alert("You don't have speechSynthesis");
}
var voices = window.speechSynthesis.getVoices();
console.log(voices) // []
$("#test").on('click', function(){
var voices = window.speechSynthesis.getVoices();
console.log(voices); // …Run Code Online (Sandbox Code Playgroud) 尝试在Chrome 33中使用语音合成API时遇到问题.它与较短的文本完美配合,但如果我尝试更长的文本,它就会停在中间.在它停止一次后,语音合成在Chrome中的任何位置都不起作用,直到浏览器重新启动.
示例代码(http://jsfiddle.net/Mdm47/1/):
function speak(text) {
var msg = new SpeechSynthesisUtterance();
var voices = speechSynthesis.getVoices();
msg.voice = voices[10];
msg.voiceURI = 'native';
msg.volume = 1;
msg.rate = 1;
msg.pitch = 2;
msg.text = text;
msg.lang = 'en-US';
speechSynthesis.speak(msg);
}
speak('Short text');
speak('Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically …Run Code Online (Sandbox Code Playgroud) 我在Google Chrome v34.0.1847.131上使用语音合成API.从v33开始,该API在Chrome中实施.
除了分配回调时,文本到语音大部分都有效onend.例如,以下代码:
var message = window.SpeechSynthesisUtterance("Hello world!");
message.onend = function(event) {
console.log('Finished in ' + event.elapsedTime + ' seconds.');
};
window.speechSynthesis.speak(message);
Run Code Online (Sandbox Code Playgroud)
有时会打电话onend,有时不打电话.时机似乎完全没有了.当它被调用时,打印elapsedTime总是像一些时代一样1399237888.
javascript google-chrome text-to-speech speech-synthesis google-text-to-speech
我正在尝试使用它来安装TTS包.在我尝试执行以下命令之前一切正常:
import pyttsx
Run Code Online (Sandbox Code Playgroud)
我收回了这个错误:
File "/usr/local/lib/python3.4/dist-packages/pyttsx/__init__.py", line 18, in module <br>
from engine import Engine<br>
ImportError: No module named 'engine'
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.谢谢!
在Chrome浏览器(v72,W10)和Opera中,以下代码段有时 似乎都不会运行附加的end侦听器到SpeechSynthesisUtterance,可能运行了该代码段的50倍。(很抱歉,在此版本的原始版本中,可以更轻松地复制它-现在,创建按钮单击时的发音看起来使该错误更加罕见)
button.onclick = () => {
console.log('start script');
button.disabled = true;
const utt = new SpeechSynthesisUtterance('e');
utt.addEventListener('end', () => {
console.log('end event triggered');
});
// just for debugging completeness, no errors seem to be thrown though
utt.addEventListener('error', (err) => {
console.log('err', err)
});
speechSynthesis.speak(utt);
setTimeout(() => {
console.log('finished?');
}, 1500);
};Run Code Online (Sandbox Code Playgroud)
<button id="button">click</button>Run Code Online (Sandbox Code Playgroud)
从我所看到的情况来看,如果end事件曾被激活,那么它将始终在给定的页面加载中被激活,这就是为什么我禁用了以上代码片段中的按钮的原因。(您必须多次重新运行该代码段才能看到问题)
如果您在禁用自动播放限制的情况下在Chrome(W10上为72)中运行以下代码段,则可以更轻松地重现该代码段。(转到chrome://flags/,将“ 自动播放”策略更改为“ 无需用户手势”)。
(不幸的是,在Opera中,与第一个片段类似,它似乎很难复制)
console.log('start script');
function say(text) { …Run Code Online (Sandbox Code Playgroud)我有一个asp.net MVC应用程序,它有一个控制器动作,它接受一个字符串作为输入,并发送一个合成语音的响应wav文件.这是一个简化的例子:
public async Task<ActionResult> Speak(string text)
{
Task<FileContentResult> task = Task.Run(() =>
{
using (var synth = new System.Speech.Synthesis.SpeechSynthesizer())
using (var stream = new MemoryStream())
{
synth.SetOutputToWaveStream(stream);
synth.Speak(text);
var bytes = stream.GetBuffer();
return File(bytes, "audio/x-wav");
}
});
return await task;
}
Run Code Online (Sandbox Code Playgroud)
应用程序(特别是此操作方法)在2008 R2服务器,2012(非R2)服务器和我的8.1 dev PC上的服务器环境中运行良好.它在标准的Azure 2012 R2虚拟机上运行良好.但是,当我将其部署到三个2012 R2服务器(最终的永久主页)时,操作方法永远不会产生HTTP响应 - IIS工作进程无限期地最大化其中一个CPU核心.事件查看器中没有任何内容,并且在使用Procmon查看服务器时没有任何内容跳出来.我已经通过远程调试附加到进程,并且synth.Speak(text)永远不会返回.当synth.Speak(text)执行呼叫我立即看到在服务器的任务管理器失控W3wp.exe进程.
我的第一个倾向是相信一些过程在服务器上干扰语音合成,但是Windows讲述者工作正常,像这样的简单控制台应用程序也能正常工作:
static void Main(string[] args)
{
var synth = new System.Speech.Synthesis.SpeechSynthesizer();
synth.Speak("hello");
}
Run Code Online (Sandbox Code Playgroud)
所以显然我不能责怪服务器的语音合成.那么也许我的代码中存在问题,或者IIS配置中有什么奇怪的东西?如何在这些服务器上使此控制器操作正常工作?
这是测试操作方法的简单方法(只需url为路由获取正确的值):
<div>
<input type="text" id="txt" autofocus />
<button type="button" …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc text-to-speech speech-synthesis windows-server-2012-r2
大多数人可能都知道google翻译的文本到语音合成器,因为你可以在这里以编程方式访问btw:
http://translate.google.com/translate_tts?tl=en&q=text
Run Code Online (Sandbox Code Playgroud)
我的印象是它有时使用espeak,但在主要语言中,质量要好得多.谁知道谷歌正在使用什么,或者他们正在使用什么声音?显然,这不是正常的,也不是mbrola espeak的声音.
text-to-speech google-translate speech-synthesis espeak machine-translation
是否有针对桌面或浏览器环境的已知API的完整列表?
speech-recognition text-to-speech speech-synthesis speech-to-text
我是第一次学习android开发,我的目标是创建一个简单的Hello World应用程序,它接收一些文本,并大声读出它们.
我的代码基于我找到的一个例子,这是我的代码:
class MainFeeds : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_feeds)
card.setOnClickListener{
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show()
TTS(this, "Hello this is leo")
}
}
}
class TTS(private val activity: Activity,
private val message: String) : TextToSpeech.OnInitListener {
private val tts: TextToSpeech = TextToSpeech(activity, this, "com.google.android.tts")
override fun onInit(i: Int) {
if (i == TextToSpeech.SUCCESS) {
val localeUS = Locale.US
val result: Int
result = tts.setLanguage(localeUS)
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Toast.makeText(activity, "This Language is …Run Code Online (Sandbox Code Playgroud) android voice text-to-speech speech-synthesis google-text-to-speech
是否可以将Web Speech API中的合成语音用作SourceNode内部Web Audio API的音频上下文?
speech-synthesis ×10
javascript ×3
voice ×2
android ×1
asp.net-mvc ×1
c# ×1
dom-events ×1
espeak ×1
python-3.4 ×1
speech ×1