Closed

Web Audio API Recorder Front-end

This project received 2 bids from talented freelancers with an average bid price of $100 USD.

Get free quotes for a project like this
Employer working
Skills Required
Project Budget
N/A
Total Bids
2
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.

The recorder should use Web Audio API (and not Flash) to record audio from microphone in 16bit mono 16khz format, and send it to the server. There is one solution available currently, see [[url removed, login to view]] below. However, it cannot specify recording format. That's why [XAudioJS] (see below) has to be used.

I'll provide the backend php script. The script is to be compatible with wami-recorder ([url removed, login to view]) . In other words, I'm planning on using this project as an alternative to wami-recorder when appropriate.

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

This will be a recorder written in Javascript, utilizing the Web Audio API ([url removed, login to view]), and/or part of WebRTC ([url removed, login to view]). 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, and each time it sends 1 second of audio data. 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:
[[url removed, login to view]] [url removed, login to view]
[[url removed, login to view]] [url removed, login to view]
[XAudioJS] [url removed, login to view]

Caveats:
1. The client must send WAVE in 16bit mono 16khz format. [[url removed, login to view]] can only send in output format, which is usually 16bit stereo 44khz, due to reasons discussed in [url removed, login to view] . 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 [[url removed, login to view]]. 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 [url removed, login to view] .

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.

It's important that you review the 3 open source projects I provided. Because the task really involves using them together.

IMPORTANT: I'm actually not quite sure it's feasible to implement this project. So it's important that you evaluate it first. If you did bid, I'm gonna have to assume it's possible. In which case your job is to glue these 3 projects together. I'm not so sure about the budget, the specified one is a bit low but I'm open to ideas.

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online