我希望Android语音识别系统能够分析音频文件而不是麦克风的默认传入语音.
有没有办法做到这一点?
谢谢.
我试图从音频文件(WAV文件)中提取振幅数组.我将使用此振幅数组来绘制给定wav文件的幅度与时间关系图.我能够自己绘制图形,但不知道如何从java中的给定音频(wav)文件中提取幅度?
背景
我正在尝试使用此处的 MediaStreamSource实现在Silverlight 4中传输wave文件.问题是我想在缓冲时播放文件,或者至少在缓冲时给用户一些视觉反馈.现在我的代码看起来像这样:
private void button1_Click(object sender, RoutedEventArgs e)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(App.Current.Host.Source, "../test.wav"));
//request.ContentType = "audio/x-wav";
request.AllowReadStreamBuffering = false;
request.BeginGetResponse(new AsyncCallback(RequestCallback), request);
}
private void RequestCallback(IAsyncResult ar)
{
this.Dispatcher.BeginInvoke(delegate()
{
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
WaveMediaStreamSource wavMss = new WaveMediaStreamSource(response.GetResponseStream());
try
{
me.SetSource(wavMss);
}
catch (InvalidOperationException)
{
// This file is not valid
}
me.Play();
});
}
Run Code Online (Sandbox Code Playgroud)
问题是在设置request.AllowReadStreamBuffering = false流后不支持搜索并且上面提到的实现抛出异常(请记住我已经将一些位置设置逻辑放入if (stream.CanSeek)块中):
禁用缓冲时,主线程不支持读取
题
有没有办法在Silverlight 4中预先缓存WAV流?
作为学习C#的借口,我一直在尝试编写一个简单的项目:创建音频文件.首先,我想确保我可以编写符合WAVE格式的文件.我已经在线研究了格式(例如,这里),但每当我尝试播放文件时,它都无法正确打开.这是我的代码.缺少什么或不正确?
uint numsamples = 44100;
ushort numchannels = 1;
ushort samplelength = 1; // in bytes
uint samplerate = 22050;
FileStream f = new FileStream("a.wav", FileMode.Create);
BinaryWriter wr = new BinaryWriter(f);
wr.Write("RIFF");
wr.Write(36 + numsamples * numchannels * samplelength);
wr.Write("WAVEfmt ");
wr.Write(16);
wr.Write((ushort)1);
wr.Write(numchannels);
wr.Write(samplerate);
wr.Write(samplerate * samplelength * numchannels);
wr.Write(samplelength * numchannels);
wr.Write((ushort)(8 * samplelength));
wr.Write("data");
wr.Write(numsamples * samplelength);
// for now, just a square wave
Waveform a = new Waveform(440, 50);
double t = 0.0;
for …Run Code Online (Sandbox Code Playgroud) 我只使用MATLAB作为计算器,所以我不太熟悉这个程序.我希望一个善良的人可以指导我,因为谷歌目前不是我的朋友.
我wav在下面的链接中有一个文件,其中有人声和背景中的一些噪音.我希望去除噪音.有谁能告诉我如何在MATLAB中做到这一点?
假设我有一个读取.WAV或.AIFF文件的程序,文件的音频被编码为浮点样本值.我的程序假设任何格式良好(基于浮点的).WAV或.AIFF文件只包含[-1.0f,+ 1.0f]范围内的样本值是否正确?我找不到解决这一点的WAV或AIFF规范中的任何内容.
如果这不是一个有效的假设,那么如何才能知道文件中音频的完整动态范围是什么?(我可以读取整个文件并找出文件的实际最小和最大样本值是什么,但是有两个问题:(1)如果文件非常大,那将是一个缓慢/昂贵的操作,(2) )它会丢失信息,因为如果文件的创建者打算让文件有一些"余量",以免在dbFS最大点播放,我的程序将无法检测到这一点)
我正在尝试处理音频数据.我正在使用Java.我已将音频数据提取到数组中.现在我应该将N个数据样本传递给计算离散傅里叶变换(或快速傅里叶变换,这样更有效)的函数.我读过文档,但是我越来越困惑了.我想要计算的是幅度谱(| X(k)|).谁能帮我?谢谢
我有一个目录,其中有大约50个wav文件,我需要转换为caf,因为AudioServicesCreateSystemSoundID()为其中一些(但不是全部)返回错误.
以下是我成功用于单个文件的命令示例:
afconvert -f caff -d LEI16@44100 -c 1 whistle.wav whistle.caf
Run Code Online (Sandbox Code Playgroud)
如何快速完成此操作 - 不是每个文件一个接一个?
编辑:纳入改变的uv001的答案.
我只能发现ICS 4.0支持FLAC解码,但编码.我需要一些编码器将wav转换为flac,但是当前我找不到它.我发现有一个jFlac avaible,但我不知道如何使用这个库,只是简单地转换文件.
有人能帮我一把吗?
今天,我只是自己一些想法,使用JavaFlacEncoder.它适用于WAV的某些比特率.
我将值更改为现在正在运行的硬编码值.
/*
* Copyright (C) 2010 Preston Lacey http://javaflacencoder.sourceforge.net/
* All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will …Run Code Online (Sandbox Code Playgroud)