标签: speech-synthesis

获取语​​音列表语音合成Chrome(Web Speech API)

以下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)

voice speech-synthesis dom-events webspeech-api

48
推荐指数
4
解决办法
2万
查看次数

Chrome语音合成,文本较长

尝试在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)

javascript google-chrome speech-synthesis

39
推荐指数
7
解决办法
2万
查看次数

SpeechSynthesis API一次回调无法正常工作

我在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

28
推荐指数
3
解决办法
1万
查看次数

pyttsx:没有名为'engine'的模块

我正在尝试使用来安装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)

任何帮助,将不胜感激.谢谢!

text-to-speech speech-synthesis python-3.4

22
推荐指数
6
解决办法
4万
查看次数

为什么有时在基于Chromium的浏览器中,SpeechSynthesisUtterance不会触发“结束”事件?

在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)

javascript speech-synthesis

19
推荐指数
1
解决办法
718
查看次数

System.Speech.Synthesis在2012 R2上挂起了高CPU

我有一个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

17
推荐指数
1
解决办法
1021
查看次数

谷歌的文字转语音引擎声音?

大多数人可能都知道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

16
推荐指数
1
解决办法
2万
查看次数

15
推荐指数
1
解决办法
3万
查看次数

Android文字转语音API听起来机器人

我是第一次学习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

15
推荐指数
2
解决办法
2822
查看次数

Web Speech API可以与Web Audio API结合使用吗?

是否可以将Web Speech API中的合成语音用作SourceNode内部Web Audio API的音频上下文?

speech speech-synthesis web-audio-api

14
推荐指数
1
解决办法
2452
查看次数