谷歌翻译文本到语音转换操作已取消



我写了一个从谷歌翻译获取音频元素的函数:

Interface.prototype.say = function( text ) {
    var audio = new Audio();
    audio.src ='http://translate.google.com/translate_tts?ie=utf-8&tl=fr&q=' + escape( text );
    audio.play();
    console.log( audio.src );
}

audio.src返回要翻译的正确字符串,但它什么也没说。在控制台中,在"网络"部分中,我发现:

translate_tts?ie=utf-8&tl=fr&q=Initialisation%20termine
translate.google.com
GET
(canceled)
Pending
game.php:1
Parser

如您所见,文件请求已取消。如果我单击链接(第一行),它运行良好。似乎它不仅在我尝试将文件请求到另一个域时才有效,但它在 Google 翻译域中运行良好。

问题出在哪里?


溶液:

Interface.prototype.say = function( text ) {
    var section, frame;
    section   = document.getElementsByTagName( "head" )[ 0 ];
    frame     = document.createElement( "iframe" );
    frame.src = 'http://translate.google.com/translate_tts?ie=utf-8&tl=fr&q=' + escape( text );
    section.appendChild( frame );
}

将 Iframe 设置为 SRC。它将自动播放,或为音频设置一个加载处理程序,然后调用play 。这可能是因为您在下载之前强制播放它。

相关内容

  • 没有找到相关文章

最新更新