Google TTS API для арабского, китайского и греческого языков


Я пытаюсь скачать mp3-файл из google TTS API, вот код

try {   

        String path ="http://translate.google.com/translate_tts?tl=en&q=hello";
        //this is the name of the local file you will create
        String targetFileName = "test.mp3";
            boolean eof = false;
        URL u = new URL(path);
        HttpURLConnection c = (HttpURLConnection) u.openConnection();
        c.addRequestProperty("User-Agent", "Mozilla/5.0");
        c.setRequestMethod("GET");
        c.setDoOutput(true);
        c.connect();
        FileOutputStream f = new FileOutputStream(new File(Environment.getExternalStorageDirectory()
                + "/download/"+targetFileName));
            InputStream in = c.getInputStream();
            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ( (len1 = in.read(buffer)) > 0 ) {
            f.write(buffer,0, len1);
                     }
        f.close();
        } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (ProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();


    }

Это работает нормально, но когда я пытаюсь сделать запрос для таких языков, как китайский или греческий, которые используют специальные символы

String path ="http://translate.google.com/translate_tts?tl=zh-TW&q=你好";

Mp3-файл, который я получаю обратно, не имеет звука, но по размеру файла я могу сказать, что в нем есть данные. Когда я пытаюсь сделать то же самое с арабским языком

String path ="http://translate.google.com/translate_tts?tl=ar&q=%D8%A7%D9%84%D9%84%D9%87";

Я получаю пустой mp3-файл с 0 байтами.

Я пробовал использовать различные агенты пользователей, и ничего не кажется работать.

Пожалуйста, помогите.

Спасибо

3 4

3 ответа:

Используйте путь в качестве URI, а не строки, а затем измените его на строку ascii.

URI uri = new URI("http://translate.google.com/translate_tts?tl=zh-TW&q=你好");

URL u = new URL(uri.toASCIIString());

У меня та же проблема. Но я решил ее еще вчера. Я хочу, чтобы API сказал китайский и сохранил в mp3-файл .

Теперь url-адрес: путь ="http://translate.google.com/translate_tts?tl=zh-TW&q=你好" вы делаете, как следует: путь ="http://translate.google.com/translate_tts?ie=UTF-8&tl=zh-TW&q=". urlencode ("你好");

Добавьте параметр ie=utf-8 и Закодируйте китайские слова. Ты получишь то, что хочешь .

И если приложение вылетает попробуйте это

txtToTranslate = txtToTranslate.replace(" ", "%20");
Он заменяет пробелы между словами.