1

私は英語を学んでいて、発音を助けるソフトウェアを開発したいと思っています。

ここに入力すると、HowJSay というサイトがあります 。この音をサイトに入力しなくても再生できるソフトウェアをJAVAで開発したいです=]

私はこれを試しましたが、うまくいきません=/

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.howjsay.com/index.php?word=car");
    url.openConnection();
    AudioStream as = new AudioStream(url.openStream());
    AudioPlayer.player.start(as);
    AudioPlayer.player.stop(as);
}

何か案は?お願いします。

4

4 に答える 4

4

どうぞ

import javax.sound.sampled.*;
import java.io.IOException;
import java.net.URL;

public class HowJSay
{
public static void main(String[] args) {
    AudioInputStream din = null;
    try {
        AudioInputStream in = AudioSystem.getAudioInputStream(new URL("http://www.howjsay.com/mp3/"+ args[0] +".mp3"));
        AudioFormat baseFormat = in.getFormat();
        AudioFormat decodedFormat = new AudioFormat(
                AudioFormat.Encoding.PCM_SIGNED,
                baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
                baseFormat.getChannels() * 2, baseFormat.getSampleRate(),
                false);
        din = AudioSystem.getAudioInputStream(decodedFormat, in);
        DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat);
        SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
        if(line != null) {
            line.open(decodedFormat);
            byte[] data = new byte[4096];
            // Start
            line.start();

            int nBytesRead;
            while ((nBytesRead = din.read(data, 0, data.length)) != -1) {
                line.write(data, 0, nBytesRead);
            }
            // Stop
            line.drain();
            line.stop();
            line.close();
            din.close();
        }

    }
    catch(Exception e) {
        e.printStackTrace();
    }
    finally {
        if(din != null) {
            try { din.close(); } catch(IOException e) { }
        }
    }
}

}
于 2012-12-09T16:58:35.773 に答える
2

Java Soundは短いクリップを簡単に再生できますが、すぐに使用できるフォーマットの数は限られています。デフォルトでサポートするフォーマットはAudioSystem.getAudioFileTypes()& で与えられ、そのリストには MP3 は含まれません。

MP3 のサポートの欠如に対する解決策は、デコーダーをアプリのランタイム クラスパスに追加することです。Java Sound は Service Provider Interface で機能するため、クラスパス上にあるだけで役に立ちます。MP3 デコーダーは にありますmp3plugin.jar

MP3 を再生するためのコードについては、情報の短いソースを参照してください。クリップが短い限り、ページで十分です。つまり。

import java.net.URL;
import javax.swing.*;
import javax.sound.sampled.*;

public class LoopSound {

    public static void main(String[] args) throws Exception {
        URL url = new URL(
            "http://pscode.org/media/leftright.wav");
        Clip clip = AudioSystem.getClip();
        // getAudioInputStream() also accepts a File or InputStream
        AudioInputStream ais = AudioSystem.
            getAudioInputStream( url );
        clip.open(ais);
        clip.loop(Clip.LOOP_CONTINUOUSLY);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // A GUI element to prevent the Clip's daemon Thread
                // from terminating at the end of the main()
                JOptionPane.showMessageDialog(null, "Close to exit!");
            }
        });
    }
}
于 2012-12-10T01:53:09.250 に答える
1

サイトをあまり気にしない場合は、GoogleTranslateAPIを使用してみてください

try{
        String word="car";
        word=java.net.URLEncoder.encode(word, "UTF-8");
        URL url = new URL("http://translate.google.com/translate_tts?ie=UTF-8&tl=ja&q="+word);
        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
        urlConn.addRequestProperty("User-Agent", "Mozilla/4.76");
        InputStream audioSrc = urlConn.getInputStream();
        DataInputStream read = new DataInputStream(audioSrc);
        AudioStream as = new AudioStream(read);
        AudioPlayer.player.start(as);
        AudioPlayer.player.stop(as);
}

ここからの助けを借りて: Java:Google翻訳からテキスト読み上げをダウンロード

すべてwordのサイトでリンク付きのmp3ファイルがあることが保証されている場合は、 howjsay.com/mp3/word.mp3URLを次のように変更する必要があります。

URL url = new URL("howjsay.com/mp3/" + word + ".mp3");

于 2012-12-09T16:31:01.250 に答える
0

Marek が提供するコードに問題がある場合は、次の基準を満たしていることを確認してください。

  1. 16 ビット .wav などのサポートされているオーディオ形式を使用する
  2. 使用している URL が実際に音声を自動的に再生していることを確認してください。

オーディオ ファイルのダウンロード ページを参照するだけでは十分ではありません。オーディオをストリーミングする必要があります。YouTube の URL は動画であるため、機能しません。Audacity は、オーディオ ファイルを互換性のある 16 ビット .wav ファイルに変換するための優れた方法です。独自のドメインや Web サイトをお持ちの場合は、そこからファイルへの直接リンクを提供できます。

于 2017-12-09T19:59:09.630 に答える