一个API,用于演讲一些不适用于AJAX的文本

时间:2016-01-11 11:28:31

标签: php ajax

我正在尝试使用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);
    }
?>

有任何帮助吗? 感谢

1 个答案:

答案 0 :(得分:0)

现在你需要从你的javascript向PHP脚本发送2个数据

更改此行以包含两个项目

data: "text=" + $("#srcText").val(),

date: {text: $("#srcText").val(), language: $("#language").val()},

哦,当然,就像我的评论建议一样,也请删除dataType: 'select',