【发布时间】:2014-04-03 21:50:49
【问题描述】:
将语音从 Android 手机流式传输到服务器进行音频分析似乎不是一件容易的事。
安卓:
在 android 中,录音机提供了一个很好的 API,我从 Stream Live Android Audio to Server 改编而来,将麦克风输入流式传输到任何服务器。
输出基本上是用以下几行生成的:
DatagramSocket socket = new DatagramSocket();
final InetAddress destination = InetAddress.getByName("1.1.1.1");
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,
audioFormat,minBufSize*10);
while(rec == true) {
minBufSize = recorder.read(buffer, 0, buffer.length);
packet = new DatagramPacket (buffer,buffer.length,destination,port);
socket.send(packet);
}
让套接字工作(应该在 C/C++ 中)但是让我头疼。我通常想在我的 Ubuntu 服务器上执行三个步骤:
1. 接收音频流(我在本地使用 Portaudio 进行音频录制,我在 C/C++ 中还没有找到合适的工具来使用该流作为输入。有什么像来自套接字连接的麦克风模拟器??)
2.分析流并以jsonstring形式给出结果(或者只是第一个文本字符串
3. 将此结果流式传输回 android 设备。
我是网络编程的新手,我尝试了很多教程,例如:
http://codebase.eu/tutorial/linux-socket-programming-c/
http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html
http://www.the-tech-tutorial.com/?p=1555
而且它们似乎都不适合这项任务。所以:
如何在 C/C++ 中管理音频流。
那么流以何种格式可用于进一步处理?
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
看起来不直观,您需要删除库请求,否则有人可能会关闭您的问题。至于其余的,您是否设法实现了android设备和PC之间的连接?
netcat和aplay/arecord是您在测试时可能会发现对传输音频有用的两个工具。
标签: android c++ c sockets audio