Embed voice capture in any web form that accepts custom HTML — your own app, a landing page, a CMS block, or a survey tool with an HTML question type. One div and one script tag.
AvailableAdd this code wherever you want the voice widget to appear. Replace proj_XXXXXXXX with your project key and the data-target selector with the id of your input field.
<div id="genius-voice-q1"
data-project="proj_XXXXXXXX"
data-question="q1"
data-lang="es"
data-target="#your-input-id"></div>
<script src="https://api.voicecapture.ai/voice.js"></script>The widget looks for data-target when it initialises. On a static page the script tag after the form is enough. In a single-page app where the field is rendered by your own JavaScript, place the embed inside the same component so it mounts together with the input, rather than in the document head.
Replace the data-session placeholder with whatever value identifies the respondent in your system — a query parameter, a logged-in user id, an order number. This is the only part of the generic embed nobody can do for you, and it is what turns a pile of transcripts into rows you can join.
Open the page, record ten or fifteen seconds and check the dashboard. The transcript should arrive within about half a minute, carrying the session value you set. Export to CSV on any plan, or to Excel on a paid credit pack.
SESSION_IDReplace with a unique identifier for each respondent. This could be a URL parameter, cookie value, or generated UUID.
A single microphone button wherever you placed the div, with your prompt text on it. Recording uses the browser’s own audio API — no plugin, no app, no download, and the same permission prompt any site asking for a microphone would show.
They can record, play it back and re-record before submitting. If microphone access is unavailable or refused, the widget does not mount and your existing input carries on working, so a form never becomes unanswerable because voice failed.
It is responsive by default and works on mobile browsers, which is where the difference between a typed answer and a spoken one is largest.
Audio uploads when the respondent stops and is transcribed automatically. Audio files are not kept — only the resulting text — and everything travels over an encrypted connection.
Each recording is stored against your project key, the question id you set, and whatever you put in data-session. Because the generic embed has no platform merge code to read, that session value is entirely yours to supply, and it is the difference between transcripts you can join to your own data and transcripts you cannot.
Read and edit transcripts in the dashboard as they arrive, then export to CSV, or to Excel on a paid credit pack. Spoken answers run about twice as many words as typed answers to the same question; the sample and the caveats are in how we measured this.
data-target matched nothing when the script ran. Either the selector is wrong, or the input is created later by your own code. Confirm the selector in the browser console first, then move the embed so it loads after the field exists.
The embed ran twice, which usually means a single-page app re-mounted the component. Give the container a fixed id and check whether that id is already in the document before creating another one — the same guard the platform-specific snippets use.
Check the project key. It is the data-project value, it fails silently when wrong, and a partial copy from the dashboard is the usual cause.
data-session was still a placeholder, or resolved to an empty string. The transcript is not lost — it is simply unjoinable, so fix the value and re-test before fieldwork rather than after.
If this is your first voice study rather than your first embed, the long-form guide covers question wording, sample, fieldwork monitoring and analysis.
The complete guide to voice surveys in market researchOur AI assistant can walk you through the setup step by step.
Set up Voice Capture in under 5 minutes. No credit card. No commitment.
Get Started FreeWe use cookies to improve your experience and analyze site traffic. Learn more