Web Audio API Recorder Front-end + Simple PHP Backend

CANCELLED
Bids
0
Avg Bid (USD)
N/A
Project Budget (USD)
$30 - $250

Project Description:
This task involves developing a recorder web application, mostly front end. It records microphone input, and sends it to the server. Related knowledges are: Web Audio API, getUserMedia(), WebRTC, which are all part of HTML5 specification. Please pay attention to the description because the requirements are very specific.

=== [ Web Audio API Recorder ] ===

This will be a recorder written in Javascript, utilizing the Web Audio API (https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html), and/or part of WebRTC (webrtc.org). The deliverable should contain an HTML webpage, a Javascript file containing the front end, and a PHP file that handles uploading to the server, and writing the WAV format.

Basic operations are as follows. The user clicks a button in the HTML page to start recording, and he clicks another button to stop recording. During recording, the client (Javascript) must send recorded sound to the server via HTTP FORM POST in 1 second interval. That is, the client sends HTTP FORM POST once per second to send the a 1 second recording. The PHP script at the server accepts this POST and write down a full file eventually.

Reference:
All core functions required by this task are actually already covered by open source projects, see below:
[Recorder.js] https://github.com/mattdiamond/Recorderjs
[zlib.js] https://github.com/imaya/zlib.js
[XAudioJS] https://github.com/grantgalitz/XAudioJS

Caveats:
1. The client must send WAVE in 16bit mono 16khz format. [Recorder.js] can only send in output format, which is usually 16bit stereo 44khz, due to reasons discussed in https://github.com/mattdiamond/Recorderjs/issues/11 . Therefore, one must utilize the resample function in [XAudioJS].
2. Before sending the WAVE to the server, the client must compress it using zlib. To do this, you'll need [zlib.js]. Decompressing at server using PHP is easier.

Notes:
The client should send sound data only, and not the WAVE header. The PHP script should be responsible for constructing the wave header file, and because the format is fixed, it's easy. A reference of such function can be found at https://code.google.com/p/wami-recorder/ .

Because the client sends 1 second data in 1 second interval, the client will make 1 HTTP POST request per second. Therefore it sends in segments. This task does not require a fully fledged PHP upload script. For handling multiple segment, synchronizing, and reconstructing WAVE from segments, just find the easiest way you can handle. The output file name can be fixed. As long as a single run goes well, you are done.

The target platform of this application is the current stable version of Chrome. You'll need to visit chrome://flags and enable 'Web Audio Input' in order for any of these to work.

Thank you for reading the descriptions. And remember once you bid, I'll run a small interview with you to determine whether this can be done and your confidence and capabilities.

Additional Project Description:
02/24/2013 at 16:08 GMT
It's important that you review the 3 open source projects I provided. Because the task really involves using them together.

Skills required:
HTML5, Javascript, PHP
Hire billholt
Project posted by:
billholt China
Verified
Public Clarification Board
Bids are hidden by the project creator. Log in as the employer to view bids or to bid on this project.
You will not be able to bid on this project if you are not qualified in one of the job categories. To see your qualifications click here.