2012-04-17 91 views
0

我使用谷歌的非官方tts api创建了一个TTS应用程序,它工作正常,但api一次只能处理最多100个字符,但我的应用程序可能必须发送包含尽可能多的字符串为300个字符。控制Google TTS API的输入

这里是我的代码

 try { 
     String text = "bonjour comment allez-vous faire"; 

     text=text.replace(" ", "%20"); 
     String oLanguage="fr"; 

     MediaPlayer player = new MediaPlayer(); 
     player.setAudioStreamType(AudioManager.STREAM_MUSIC);   
     player.setDataSource("http://translate.google.com/translate_tts?tl=" + oLanguage + "&q=" + text); 

     player.prepare(); 
     player.start(); 

    } catch (Exception e) { 
     // TODO: handle exception 
    } 

所以我的问题是

  1. 我如何得到它来检查字符串中的字符数和100个字符的限制内只发送完整的单词。

  2. 如何检测时,TTS的第一组结束后这样我就可以发送第二,以避免双方的讲话相互重叠

  3. 是否有任何需要我使用的AsyncTask这个过程?

回答

0

1.How我能得到它来检查字符串中的字符数和100个字符的限制内只发送完整的单词。

ArrayList<String> arr = new ArrayList<String>(); 
    int counter = 0; 
    String textToSpeach = "Your long text"; 
    if(textToSpeach.length()>100) 
    { 
     for(int i =0 ; i<(textToSpeach.length()/100)+1;i++) 
     { 
     String temp = textToSpeach.substring(0+counter,99+counter); 
     arr.add(temp.substring(0, temp.lastIndexOf(" "))); 
     counter = counter + 100; 
     } 
    } 

2.How我检测何时TTS的第一组完成,所以我可以发送第二避免两个讲话相互重叠

player.setOnCompletionListener(new OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer mp) { 

      // pass next block 
     } 
    }); 

3.Is有任何需要我为这个过程使用Asynctask?

现在我没有看到任何需要。

+0

完成测试的第一部分,它的工作原理,但我需要从第二次temp.lastIndexOf(“”)后的下一个字符开始计数器,因此没有字符丢失。我怎样才能做到这一点? – Amanni 2012-04-17 11:46:12

+0

计数器变量应声明在活动水平..静态 – MKJParekh 2012-04-17 11:48:56

+0

该计数器重新启动从100代码,但我问的是,如果第一个字符串的100个字符结尾与例如:“有一个很好的da”而不是“有一个美好的一天“,函数lastindexof第一次停在”有一个不错的“。然后我想从“day”重新开始下一个字符串。 – Amanni 2012-04-17 11:58:22

0

简单:这不是公共API,不要使用它。使用Andorid内置的TTS引擎进行语音合成。它没有字符串长度限制。

+0

这听起来比内置TTS语音引擎更好 – Amanni 2012-04-17 13:29:21

+0

也许吧,但是Android TTS引擎是可扩展的:如果您需要更好的声音,您可以简单地安装提供更好声音的包。非官方的API可能会随时消失,或者如果您发出太多请求,则可能会被阻止。更不用说使用它在法律上是灰色的(至少)。 – 2012-04-17 13:58:27

+0

谢谢,我认为从长远来看这可能是安全的。你可以给我一个关于这些软件包的链接,以获得更好的声音,我可以将它们嵌入到我的应用程序中,还是需要将它们单独安装到您的手机上 – Amanni 2012-04-17 17:44:47