Android中的任何TTS api土耳其语?

时间:2012-02-16 12:28:48

标签: android api turkish text-to-speech

Android中是否有针对Android的免费TTS(文字转语音)服务?我在google中找不到任何有用的东西。

3 个答案:

答案 0 :(得分:5)

我还没在机器人上试过,但我最近发现了这个:http://www.ispeech.org 网络应用程序的语音质量看起来很有希望。

试一试:)

答案 1 :(得分:1)

您可以在此处使用Google TTS:

strText =  converToTurkishCharacter(strText);
     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                        textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {


                            @Override
                            public void onInit(int status) {

                                Locale locale = new Locale("tr_TR");//set Locale
                                textToSpeech.setLanguage(locale);


                                if (status != TextToSpeech.ERROR) {

                                }
                                if (status == TextToSpeech.SUCCESS) {


                                    String[] text = strText.split("\\.");//split with every "dot"

                                    for (int i = 0; i < text.length; i++) {
                                        HashMap uttrerance = new HashMap();
                                        uttrerance.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, Integer.toString(i));
                                        textToSpeech.speak(text[i], 1, uttrerance);

                                    }
                                }


                                //-------checks engine
                                List engineList = textToSpeech.getEngines();

                                for(Object strEngine : engineList){
                                    Log.d("tagg",strEngine.toString());
                                    if(strEngine.toString().equals("EngineInfo{name=com.google.android.tts}")){//check if google tts api engine is installed on device

                                        isGoogleAvaible = true;
                                    }
                                }
                                if(!isGoogleAvaible){
                                    Toast toast = Toast.makeText(ActivityColumnistArticle.this,
                                            "Google TTS Eksik...Lutfen yukleyin", Toast.LENGTH_LONG);
                                    toast.setGravity(Gravity.BOTTOM, 0, 0);
                                    toast.show();
                                    Intent intent = new Intent(Intent.ACTION_VIEW);
                                    intent.setData(Uri.parse("market://details?id=com.google.android.tts"));
                                    startActivity(intent);//user should install google tts , if it is defaultly not installed
                                }
                                //---------------For missing data
                                int code = textToSpeech.isLanguageAvailable(locale);
                                if (code == -2 || code == -1) {
                                    Intent installIntent = new Intent();
                                    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                                    startActivity(installIntent);
                                }
                            }

                        }, "com.google.android.tts");
                    }
                    else{
                        Toast toast = Toast.makeText(ActivityColumnistArticle.this,
                                "Ses destegi icin minumum Icecream Sandwich yuklu olmalı...", Toast.LENGTH_LONG);
                        toast.setGravity(Gravity.BOTTOM, 0, 0);
                        toast.show();
                    }

此外,谷歌TTS有像“ö”,“ğ”这样的türkish字符的错误,所以你应该用unicode转换它们:

    private String converToTurkishCharacter(String text){


           text = text.replace("\u015f", "\u015f");
           text = text.replace("\u00e7", "\u00e7");
           text = text.replace("\u011f", "\u011f");
           text = text.replace("\u0131", "\u0131");
           text = text.replace("\u00fc", "\u00fc");
           text = text.replace("\u00f6", "\u00f6");
          // ----
           text = text.replace("\u011e", "\u011e");
           text = text.replace("\u0130", "\u0130");
           text = text.replace("\u00d6", "\u00d6");
           text = text.replace("\u00dc", "\u00dc");
           text = text.replace("\u015e", "\u015e");
           text = text.replace("\u00c7", "\u00c7");
           return  text;
       }

某些Android设备只有pico TTS,所以这就是你检查Google TTS并要求用户安装的原因......

不是:为了让tts工作,你应该拥有真正的Android设备

答案 2 :(得分:0)

我在我的案例中解决了这个问题,

定义该变量:

  

final Locale locale = new Locale(“tr”,“TR”);

onCreate方法中的

      tts = new TextToSpeech(getApplicationContext(), new
      TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {

                 if (status == TextToSpeech.SUCCESS) {
                    int result = tts.setLanguage(locale);
                    if (result == TextToSpeech.LANG_MISSING_DATA
                            || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                        tts.speak("bir sorun oluştu", TextToSpeech.QUEUE_FLUSH, null);
                    }
                } else {
                    tts.speak("bir sorun oluştu.", TextToSpeech.QUEUE_FLUSH, null);
                    Log.d(TAG, "Text to speech is not successful");
                }
            }
        });
       tts.speak("bağlanıyor", TextToSpeech.QUEUE_FLUSH, null);

它会说“bağlanıyor”