2016-10-19 6 views
0

をエフェクトの適用は、以下のコードが使用され、その目的のためにtext to speechを変換する(MaryTTS [実際にはより多くのです])と呼ばれる:Javaの - 私はJavaでライブラリのセットを使用していますMaryTTS声に

public class TextToSpeech { 

    private AudioPlayer  tts; 
    private MaryInterface marytts; 
    Map<Integer,String>  numbersMap = new HashMap<>(); 

    /** 
    * Constructor 
    */ 
    public TextToSpeech() { 
     try { 
      marytts = new LocalMaryInterface(); 

      // Available voices 
     Voice.getAvailableVoices().stream().forEach(System.out::println); 
      marytts.setVoice("cmu-slt-hsmm"); 

     } catch (MaryConfigurationException ex) { 
      Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); 
     } 

     numbersMap.put(1, "one"); 
     numbersMap.put(2, "two"); 
     numbersMap.put(3, "three"); 
     numbersMap.put(4, "four"); 
     numbersMap.put(5, "five"); 
     numbersMap.put(6, "six"); 
     numbersMap.put(7, "seven"); 
     numbersMap.put(8, "eight"); 
     numbersMap.put(9, "nine"); 
    } 

    public void setVoice(String voice) { 
     marytts.setVoice(voice); 
    } 

    /** 
    * Transform number to speech 
    * 
    * @param number 
    */ 
    public void speak(int number) { 
     speak(numbersMap.get(number)); 
    } 

    /** 
    * Transform text to speech 
    * 
    * @param text 
    */ 
    public void speak(String text) { 

     // Stop the previous player 
     if (tts != null) 
      tts.cancel(); 

     try (AudioInputStream audio = marytts.generateAudio(text)) { 

      // Player is a thread(threads can only run one time) so it can be 
      // used has to be initiated every time 
      tts = new AudioPlayer(); 
      tts.setAudio(audio); 
      tts.setDaemon(true); 
      tts.start(); 

     } catch (SynthesisException ex) { 
      Logger.getLogger(getClass().getName()).log(Level.WARNING, "Error saying phrase.", ex); 
     } catch (IOException ex) { 
      Logger.getLogger(getClass().getName()).log(Level.WARNING, "IO Exception", ex); 
     } 
    } 
} 

問題:

私はドキュメントを検索していますが、それはいくつか種類が乱雑で、私は非常にそれに新しいです。

お役立ちリンク:

http://mary.dfki.de/javadoc/index.html

http://mary.dfki.de/download/index.html

https://github.com/marytts/marytts


私は私が使用した音声にエフェクトを適用する方法を知りたいです。

どういう意味ですか?

は、これは私が同様に探していたものだったこのライブデモンストレーションでhttp://mary.dfki.de:59125/

答えて

3

を見てください。私はこの非常に質問に出くわしましたが、あまりにも多くのアクティブな例はありませんでした。いくつかの試行錯誤を通して、私は何かを考え出しました。ちょうどすべての効果の可能な取得する最初の

、あなたはこれを実行することができます。

for (AudioEffect e : AudioEffects.getEffects()) { 
    System.out.println(e.getName()); 
    System.out.println(e.getHelpText()); 
    System.out.println(); 
} 

これは、名前と設定可能な各種パラメータを出力します。 、

RobotiserEffect robotiserEffect = new RobotiserEffect(); 
robotiserEffect.setParams("amount:100"); 
StadiumEffect stadiumEffect = new StadiumEffect(); 
stadiumEffect.setParams("amount:100"); 
mary.setAudioEffects(robotiserEffect.getFullEffectAsString() + '+' + 
    stadiumEffect.getFullEffectAsString()); 

EffectsApplierというクラスもあり、これは:人々はこのようにそれを使用するために、彼らが持っている意図があること、しかし思わ

LocalMaryInterface mary = new LocalMaryInterface(); 
mary.setAudioEffects("Robot(amount:100)+Stadium(amount:200)"); 

:あなたは、このような文字列を設定することができます残念ながら、あなたが持っている効果の順序を処理して最適化することができるように思われますが、それ以上詳しく調べる時間はありませんでした。

私は働いていますgithub example、うまくいけば、これは役立ちます。

+0

ありがとうございます!私はあなたのすべての例を試してみるつもりです...それから、何も間違っていれば答えとしてマークします:)。私はもっ​​と何か質問したいと思います。ライブラリーなしでサンプルをどのように実行するのですか?私はそれを初めて使っています。つまり、Mavenなどを使ってインターネットから取り出すのですか?ファイル... – GOXR3PLUS

+0

ライブラリの 'AudioPlayer'はちょっとバグがあるようですので、私は新しいバージョンを実装しました。興味がある場合は、https://github.com/goxr3plus/Java-Text-To-Speech-Tutorial/blob/master/src/model/AudioPlayer.javaで見つけてください。 – GOXR3PLUS

+0

ええ、私はライブラリを持っています作成する。私のgithubプロジェクトを見ると、私の[POM file here](https://github.com/paul-nelson-baker/marytts-hello-world-demo/blob/master/pom.xml)が見えます。リポジトリと依存関係を書き留めます。 –

関連する問題