我正在尝试使用API来演示文本时需要一些帮助。前几天我写了一个PHP类来实现这个目标,但是我遇到了ä,ö等德语的典型元音或者像è,é,ò,etc等意大利语的元音问题正确的方式,即使字符集是以UTF-8设置的。我努力了,但我不得不放弃。然后我发送了一封电子邮件给API管理员,他们给我发回了一些关于API本身的信息,还有2个文件,其中有一个简单的例子说明如何以正确的方式使用它。
现在我想得到更多:我的意思是,我想添加一个功能:我想要一个Select标签让我的用户选择一种语言,然后是textarea标签让'当然,用这种语言写一个单词或一个句子,最后是一个语音按钮,这样他们就可以听到他们输入内容的确切发音。
我认为,我坚持使用AJAX部分,这是我称之为'new-text.php'的文件,其中包含以下代码:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
function speechText() {
$.ajax({
url: 'speech-text.php',
async: true,
dataType: 'text',
dataType: 'select',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
data: "text=" + $("#srcText").val(),
success: function (data, textStatus, jQxhr) { console.log(data); $("#audioPlayer").attr("src", data); },
data: { "select": $("#language option:selected").val() },
error: function(jqXhr, textStatus, errorThrown) { console.log(errorThrown); }
});
}
</script>
<p>
<select id="language" style="width: 200px">
<option value="">------- Select language -------</option>
<option value="ca-es">Catalan</option>
<option value="zh-cn">Chinese (China)</option>
<option value="zh-hk">Chinese (Hong Kong)</option>
<option value="zh-tw">Chinese (Taiwan)</option>
<option value="da-dk">Danish</option>
<option value="nl-nl">Dutch</option>
<option value="en-au">English (Australia)</option>
<option value="en-ca">English (Canada)</option>
<option value="en-gb">English (Great Britain)</option>
<option value="en-in">English (India)</option>
<option value="en-us">English (United States)</option>
<option value="fi-fi">Finnish</option>
<option value="fr-ca">French (Canada)</option>
<option value="fr-fr">French (France)</option>
<option value="de-de">German</option>
<option value="it-it">Italian</option>
<option value="ja-jp">Japanese</option>
<option value="ko-kr">Korean</option>
<option value="nb-no">Norwegian</option>
<option value="pl-pl">Polish</option>
<option value="pt-br">Portuguese (Brazil)</option>
<option value="pt-pt">Portuguese (Portugal)</option>
<option value="ru-ru">Russian</option>
<option value="es-mx">Spanish (Mexico)</option>
<option value="es-es">Spanish (Spain)</option>
<option value="sv-se">Swedish (Sweden)</option>
</select>
</p>
<textarea id="srcText" cols="50" rows="10"></textarea><br/>
<input type="button" value="Speech" onclick="speechText();"/>
<audio id="audioPlayer" src="" autoplay="autoplay"></audio>
</body>
</html>
然后此处使用的第二个文件称为'speech-text.php',其任务是通过cURL库使用API。 在这里,我想一切都好。我看不出任何错误。
由于我不擅长AJAX,我认为第一个文件中有错误。
另一个名为'speech-text.php'的文件有以下代码:
<?php
error_reporting(E_ALL);
// MY API-KEY: 611e0eb0f671415788150de40f609bdd
if ( isset($_POST['text']) && isset($_POST['language']) )
{
$ch = curl_init("http://api.voicerss.org/?key=611e0eb0f671415788150de40f609bdd&c=mp3&f=48khz_16bit_stereo");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "src=" . $_POST['text'] .
"hl=" . $_POST['language']);
$audioStream = curl_exec($ch);
curl_close($ch);
echo "data:audio/mp3;base64," . base64_encode($audioStream);
}
?>
有任何帮助吗? 感谢
答案 0 :(得分:0)
现在你需要从你的javascript向PHP脚本发送2个数据
更改此行以包含两个项目
data: "text=" + $("#srcText").val(),
要
date: {text: $("#srcText").val(), language: $("#language").val()},
哦,当然,就像我的评论建议一样,也请删除dataType: 'select',
行