2007年10月07日
Javaでユーザーから音声ファイルを参照して入力させる
「Javaでユーザーから音声ファイルを参照して入力させるプログラミングを教えてください。」とのことですが、こんなもんでいいかな?ユーザーが音声ファイルを参照して入力して、それを再生します。Javaは多くの音声フォーマットに対応しているようだけど、とりあえずwavファイルのみ対応。
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.net.URL; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.DataLine; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.WindowConstants; import javax.swing.filechooser.FileFilter; public class PlaySound extends JFrame { /** * */ private static final long serialVersionUID = 1L; public PlaySound() { JButton jButton = new JButton("参照..."); jButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButtonActionPerformed(evt); } }); getContentPane().add(jButton); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); pack(); setResizable(false); setVisible(true); } private void jButtonActionPerformed(ActionEvent evt) { JFileChooser fc = new JFileChooser(); fc.addChoosableFileFilter(new FileFilter() { public boolean accept(File file) { if (file.isDirectory()) return true; return file.getName().toLowerCase().endsWith(".wav"); } public String getDescription() { return "サウンドファイル(*.wav)"; } }); fc.showOpenDialog(this); if (fc.getSelectedFile() == null) { return; } File wav = fc.getSelectedFile().getAbsoluteFile(); try { // 音声再生 AudioInputStream sound = AudioSystem.getAudioInputStream(wav); AudioFormat format = sound.getFormat(); DataLine.Info di = new DataLine.Info(Clip.class, format); Clip clip = (Clip) AudioSystem.getLine(di); clip.open(sound); clip.start(); } catch (Exception ignore) { ignore.printStackTrace(); } } public static void main(String[] args) { new PlaySound(); } }
ちょっと勉強すればすぐに自分でも書けるようになりますよ。