我怎样才能发挥.mp3
和.wav
在我的Java应用程序文件?我正在使用Swing.我尝试在互联网上寻找类似这样的例子:
public void playSound() {
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("D:/MusicPlayer/fml.mp3").getAbsoluteFile());
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch(Exception ex) {
System.out.println("Error with playing sound.");
ex.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这只会播放.wav
文件.
同样的:
http://www.javaworld.com/javaworld/javatips/jw-javatip24.html
我希望能够使用相同的方法播放.mp3
文件和.wav
文件.
我需要将音频片段捕获为WAV文件,然后我可以将其传递给另一个python进行处理.问题是我需要确定何时存在音频然后记录它,当它变为静音时停止然后将该文件传递给处理模块.
我认为应该可以通过波形模块检测何时有纯静音并丢弃它然后只要检测到静音以外的其他内容开始录制,然后当线路再次静音时再停止录制.
只是不能完全了解它,任何人都可以让我开始一个基本的例子.
我需要分析写在.wav文件中的声音.为此,我需要将此文件转换为数字集(例如,数组).我想我需要使用wave包.但是,我不知道它是如何工作的.例如,我做了以下事情:
import wave
w = wave.open('/usr/share/sounds/ekiga/voicemail.wav', 'r')
for i in range(w.getnframes()):
frame = w.readframes(i)
print frame
Run Code Online (Sandbox Code Playgroud)
由于这个代码我希望看到声压作为时间的函数.相反,我看到很多奇怪的,神秘的符号(不是十六进制数字).任何人,请求,帮助我吗?
我正在尝试用Java播放*.wav文件.我希望它执行以下操作:
按下按钮时,播放一声短促的哔声.
我用谷歌搜索了它,但大部分代码都没有用.有人可以给我一个简单的代码片段来播放.wav文件吗?
我感兴趣的是如何拍音符(例如A,B,C#等)或和弦(同时多个音符)并将它们写入wav文件.
根据我的理解,每个音符都有一个与之相关的特定频率(对于完美的音高) - 例如A4(中间C以上的A)是440 Hz(完整列表本页下方的2/3 ).
如果我的理解是正确的,那么这个音调是在频域中,所以需要应用它的逆快速傅立叶变换来生成时域等价物吗?
我想知道的是:
谢谢你提供的所有帮助.如果给出代码示例,我使用的是C#,我目前用来创建wav文件的代码如下:
int channels = 1;
int bitsPerSample = 8;
//WaveFile is custom class to create a wav file.
WaveFile file = new WaveFile(channels, bitsPerSample, 11025);
int seconds = 60;
int samples = 11025 * seconds; //Create x seconds of audio
// Sound Data Size = Number Of Channels * Bits Per Sample * Samples
byte[] data = new byte[channels * bitsPerSample/8 * samples];
//Creates a Constant …
Run Code Online (Sandbox Code Playgroud) 我已经简化了我的问题并提供了一个赏金:有 什么选项可以将原始PCM音频数据压缩到Android设备上的mp3.
我的原帖: 我正在Android手机上创建一个合成器,我一直在生成PCM数据发送到扬声器.现在我想知道我是否可以将这个PCM数据编码为mp3以保存到SD卡.所述MediaRecorder对象可以编码音频从麦克风成各种格式的到来,但不允许从程序生成的音频数据的编码.
所以我的问题是,是否有用于编码音频的标准Android API?如果没有,那么基于Java或NDK的纯解决方案是什么?你能推荐其中任何一个吗?
如果不这样做,我只需要将生成的音频保存为WAV文件,我可以轻松完成.
下面是我在aspx页面中的代码,允许在浏览器中播放wav格式的音频但是使用我当前的代码我无法在Chrome浏览器中播放wav音频,但它可以在mozilla firefox中运行.如何处理此异常
<script>
window.onload = function () { document.getElementById("audio").play(); }
window.addEventListener("load", function () { document.getElementById("audio").play(); });
</script>
<body>
<audio id='audio' controls autoplay>
<source src="Sounds/DPM317.wav" type="audio/wav" />
Your browser does not support the audio element.
</audio>
</body>
Run Code Online (Sandbox Code Playgroud) 我试图在文件中保存由android的语音识别服务监听的音频数据.
实际上我RecognitionListener
按照这里的解释实现:
Android上的语音到文本
将数据保存到缓冲区中,如下所示: 捕获发送到Google语音识别服务器的音频
并将缓冲区写入Wav文件,如此处所示. Android将原始字节记录到HVEp Streaming的WAVE文件中
我的问题是如何获得适当的音频设置以保存在wav文件的标题中.事实上,当我播放wav文件时,只听到奇怪的噪音,这个参数,
short nChannels=2;// audio channels
int sRate=44100; // Sample rate
short bSamples = 16;// byteSample
Run Code Online (Sandbox Code Playgroud)
或者没有这个:
short nChannels=1;// audio channels
int sRate=8000; // Sample rate
short bSamples = 16;// byteSample
Run Code Online (Sandbox Code Playgroud)
令人困惑的是从logcat查看语音识别任务的参数我发现第一个Set PLAYBACK采样率为44100 HZ:
12-20 14:41:34.007: DEBUG/AudioHardwareALSA(2364): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
12-20 14:41:34.007: DEBUG/AudioHardwareALSA(2364): Using 2 channels for PLAYBACK.
12-20 14:41:34.007: DEBUG/AudioHardwareALSA(2364): Set PLAYBACK sample rate to 44100 HZ
12-20 14:41:34.007: DEBUG/AudioHardwareALSA(2364): …
Run Code Online (Sandbox Code Playgroud) 我需要获取.wav文件的长度.
使用:
sox output.wav -n stat
Run Code Online (Sandbox Code Playgroud)
得到:
Samples read: 449718
Length (seconds): 28.107375
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -0.999969
Midline amplitude: 0.000000
Mean norm: 0.145530
Mean amplitude: 0.000291
RMS amplitude: 0.249847
Maximum delta: 1.316925
Minimum delta: 0.000000
Mean delta: 0.033336
RMS delta: 0.064767
Rough frequency: 660
Volume adjustment: 1.000
Run Code Online (Sandbox Code Playgroud)
如何使用grep或其他方法仅输出第二列中的长度值,即28.107375?
谢谢
当我将.wav文件中的数据存储到字节数组中时,这些值意味着什么?我已经读过它们是双字节表示,但是这些双字节值究竟包含了什么?