Web Audio API Recorder Front-end

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.


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]


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.


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.

Please review my descriptions to setup your chrome browser for development. A quick test can be found here: . This is the [Recorder.js] project, which records in "output format", typically 16bit stereo 44khz.

Taidot: HTML5, Javascript, PHP

Näytä lisää: recorderjs, webaudio record, getusermedia api audio recorder, html5 recorderjs, projects using web audio api, html5 audio recorder open source, web audio api send server, recorderjs html5, html5 audio recorder send server, html5 audio recording, wami recorder, recorder web, recorderjs php, recorderjs record audio send server, web audio recorder api html5, writing thank you notes, words to use in a interview, words that end in bid, web server in javascript, web developing projects, the second interview, thank you notes interview, thank you notes for interview, thank you for the interview, thank you for job interview

Tietoa työnantajasta:
( 10 arvostelua ) Shanghai, China

Projektin tunnus: #4278375

2 freelanceria on tarjonnut keskimäärin %project_bid_stats_avg_sub_26% %project_currencyDetails_sign_sub_27% tähän työhön


i did a project using Web Audio API Recorder. So i can do this perfectly

$100 USD 20 päivässä
(0 arvostelua)

Hello Sir, I have very good knowledge in HTML5 and JavaScript. I can assure you that I would put my best effort to make this work. Thanks and Regards, Arun

$100 USD 10 päivässä
(0 arvostelua)