Find Jobs
Hire Freelancers

Audio Processing Shared Library on Linux(repost)

$100-500 USD

进行中
已发布将近 14 年前

$100-500 USD

货到付款
We are looking for an audio processing shared library (.so) that can be called from a program written in C# for Mono in Linux. The .so will work mainly with memory resident byte arrays but will also need to create a file from memory resident data in GSM 6.10 format. We are looking for the following functionality: 1. Convert a byte array from PCM audio to GSM and GSM to PCM 2. Capture microphone input in either PCM or GSM into byte array 3. Play audio on speakers from byte array input 4. Write GSM 6.10 file from byte array data 5. Documentation on library and installation of necessary components The .so will be written in c such that it can be called from a C# program written with MonoDevelop on Linux (more information below). openSUSE is our development environment but the .so will also need to run on Debian and RHEL5. We anticipate the use of the GStreamer library in the .so. Other approaches that achieve the same results are highly encouraged. Mono knowledge is highly valued. ## Deliverables Planned Use The software will be used in a distance learning environment over the Internet. It is an enhancement to an existing application currently running on Windows. The student's PC will capture audio from either the PC's microphone or a USB (ttyUSB0) device in 8 bit, 8000mhz, PCM format. The audio from either source is converted to GSM 6.10 (also 8 bit, 8000mhz mono) and sent via .Net sockets to an audio server for processing. The student's PC will also receive GSM audio from the instructor via sockets and will be played on the student's PC speakers. Students are also able to record audio and create a file locally that will be sent via FTP to a storage location for later processing. The recorded audio file will be converted into .flv format on the server using ffmpeg, but the library needs to create the audio file in a format that ffmpeg can use to create the .flv. Development and Execution Environments The student application is currently written in C# using MonoDevelop 2.2.2 running Mono 2.6.3 on openSUSE. The .so needs to be able to be called from C#. Please reference [login to view URL] for further information on interacting with unmanaged code in Mono. Other execution environments will include Debian and RHEL5. We anticipate the use of the GStreamer library to do the actual audio functions like Banshee did (see example in libBanshee sources). Deliverables We anticipate the use of a Linux .so, written in c, that can be called from C# using Mono. This program will primarily deal with PCM and GSM 6.10 audio in byte arrays rather than files, although one function will be to create a file in GSM 6.10 format. Our development environment is openSUSE but this will have to run on Debian and RHEL5. The program will support the following four functions. Included with each function is pseudo-code that illustrates how the C# program might call that function. 1. Conversion of byte array audio // byte arrays will be received from a USB RF receiver in PCM format // They will be converted to GSM and sent via IP to a remote location for playback // type = type of conversion // 1 = PCM to GSM 6.10 // 2 = GSM 6.10 to PCM byte[] outBuff = CADEconvert(byte[] inBuff,int type); 2. Play audio on default PC speakers // The byte arrays will be received from a remote IP connection // inBuff is byte array of PCM or GSM audio // function will return an error code if audio can't be played bool canPlay = CADEPlay(byte[] inBuff); 3. Get microphone output into byte array // Microphone input is captured, converted to GSM if necessary, and sent via IP // function will return an error code if the operation cannot be completed // outBuff is a byte array of PCM or GSM audio int err = [login to view URL](); // Opens the microphone and starts recording [login to view URL](); // Closes the microphone and stops recording CADEMicHandler(byte[] outBuff); // Event fires when outBuffer has audio data 4. Write byte array to create a GSM 6.10 formatted file // Audio is received via the microphone or USB RF receiver // Audio converted into GSM format if necessary and written to a file // function will return an error code if the operation cannot be completed // inBuff is byte array of GSM audio int err = [login to view URL](string fileName); // Opens the specified file and formats for output int err = [login to view URL](byte[] inBuff); // Writes audio data to the file int err = [login to view URL](); // Closes the file Bidders should describe their approach, what 3rd party libraries (if any) are required, installation requirements, and sample calling functions. We also encourage creativity and if you have a better approach than calling unmanaged code from C#, we would welcome your ideas. We're not necessarily happy about that, but haven't been able to find a better solution. Our objective is to make the audio processing as efficient and as high quality as possible.
项目 ID: 3379775

关于此项目

远程项目
活跃14 年前

想赚点钱吗?

在Freelancer上竞价的好处

设定您的预算和时间范围
为您的工作获得报酬
简要概述您的提案
免费注册和竞标工作

关于客户

UNITED STATES的国旗
Ann Arbor, United States
4.9
5
会员自11月 27, 2007起

客户认证

谢谢!我们已通过电子邮件向您发送了索取免费积分的链接。
发送电子邮件时出现问题。请再试一次。
已注册用户 发布工作总数
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
加载预览
授予地理位置权限。
您的登录会话已过期而且您已经登出,请再次登录。