6

Java でテキスト読み上げを行うだけの小さなプログラムを作成しました。

私のクラスは次のようになります。

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class TalkResource {

private static final String VOICENAME_kevin = "kevin16";
private final String text; // string to speech

public TalkResource(String text) {
    this.text = text;
}

public void speak() {
    Voice voice;
    VoiceManager voiceManager = VoiceManager.getInstance();
    voice = voiceManager.getVoice(VOICENAME_kevin);
    voice.allocate();

    String newText = "example";
    voice.speak(newText);
    }
}

私は構文(およびその他のもの)が正しいと確信していますが、私のvoiceものは常にnullです。

「kevin16」が見つからないか、プロジェクトに含まれていないと思いますが、プロジェクトに音声を追加する方法がわかりません。依存関係を取得するには、 を使用しますmaven

<dependency>
    <groupId>net.sf.sociaal</groupId>
    <artifactId>freetts</artifactId>
    <version>1.2.2</version>
</dependency>

声を除いて、すべてがそこにあります。私が読んだことから、「kevin16」はFreeTTSに含まれるべきだと思います。続行する方法はありますか?どうすればボイスを追加できますか? また、私は について何かを見つけましたMBROLAが、それは私にとって物事をさらに不明確にしました:/

助けてくれてありがとう。

4

4 に答える 4

1

それも私にはうまくいきませんでした。別のリポジトリを使用しました (POM ファイルを変更する必要があります)。次の依存関係を使用しました。

<dependencies>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>freetts</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>en_us</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>cmu_us_kal</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>cmu_time_awb</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>cmulex</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>cmutimelex</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.external.freetts</groupId>
        <artifactId>cmudict04</artifactId>
        <version>1.2.2</version>
    </dependency>

このために、次のリポジトリを使用しました。

<repository>
    <id>sonatype-oss-public</id>
    <url>https://oss.sonatype.org/content/groups/public/</url>
    <releases>
        <enabled>true</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>
于 2016-03-01T13:07:28.883 に答える
1

あなたのspeak メソッドをどこかで呼び出したことはありますか?

次のようなことを試してください:

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class TalkResource {

    private static final String VOICENAME_kevin = "kevin16";

    public TalkResource(String sayText) {
        Voice voice;
        VoiceManager voiceManager = VoiceManager.getInstance();
        voice = voiceManager.getVoice(VOICENAME_kevin);
        voice.allocate();

        voice.speak(sayText);
    }

    public static void main(String []args) {
        new TalkResource("hello");
    }
}

私はそれを突き刺して、あなたは私よりもMavenサーバーに精通していると言いますが、私はFreeTTSとMBROLAの音声でも頻繁に遊んでおり、freettsライブラリを参照するだけで問題が発生したことはありません.私のプロジェクトで。

MBROLAをチェックしたい場合は、ここに設定方法に関する適切なスレッドがあります

于 2015-01-08T09:10:52.447 に答える
1

メインに最初の行を追加するだけです

ここにコードを入力してください

public static void main(String[] args) throws Exception{
    // TODO code application logic here
 System.setProperty("freetts.voices", 
 "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
  String message = "Hello world! This is a test program";
  Mehrunisa mehrunisa = new Mehrunisa(message);
  mehrunisa.speak();
 }
于 2018-04-25T10:07:01.477 に答える