Find Jobs
Hire Freelancers

Audio Processing Shared Library on Linux

$100-500 USD

Cancelado
Publicado há quase 14 anos

$100-500 USD

Pago na entrega
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. 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. 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 do Projeto: 3355923

Sobre o projeto

1 proposta
Projeto remoto
Ativo há 14 anos

Quer ganhar algum dinheiro?

Benefícios de ofertar no Freelancer

Defina seu orçamento e seu prazo
Seja pago pelo seu trabalho
Descreva sua proposta
É grátis para se inscrever e fazer ofertas em trabalhos
1 freelancers estão ofertando em média $425 USD for esse trabalho
Avatar do Usuário
See private message.
$425 USD em 14 dias
0,0 (1 avaliação)
2,7
2,7

Sobre o cliente

Bandeira do(a) UNITED STATES
Ann Arbor, United States
4,9
5
Membro desde nov. 27, 2007

Verificação do Cliente

Obrigado! Te enviamos um link por e-mail para que você possa reivindicar seu crédito gratuito.
Algo deu errado ao enviar seu e-mail. Por favor, tente novamente.
Usuários Registrados Total de Trabalhos Publicados
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Carregando pré-visualização
Permissão concedida para Geolocalização.
Sua sessão expirou e você foi desconectado. Por favor, faça login novamente.