Guide · Published · Updated

How to moderate voice messages, to the second

Send each voice message to a speech moderation API, which turns the speech into text with the time of every word and checks it for your categories. Each finding comes back with its start and end in seconds, so a moderator plays only that part and your app can mute or hold it. Here is how it works, what to do with a finding, and what each API publishes.

To moderate voice messages, send each recording to a speech moderation API that turns the speech into text with the time of every word, checks that text for the categories your rules forbid, and returns each finding with its start and end in seconds. A moderator then plays only the flagged seconds, and your app can hold, mute or deliver the message. Detectivision's audio moderation does this in one API call, in 12 languages.

Why voice messages need their own check

Chat apps, dating apps, games and communities that filter typed messages often let voice messages through unread. Abuse moves to where the filter does not look: a voice note in a match's chat, a clip in a game lobby, a recording in a group.

  • Nobody can listen to everything. A team can read a flagged text in seconds. A voice message has to be played, and most are harmless.
  • Reports come late. By the time someone reports a voice message, the person it was aimed at has heard it.
  • The flagged part is short. One insult in a two-minute message is a few seconds long. Without its time, a moderator plays the whole recording to find it.

How speech moderation works

  1. Speech becomes text. A speech model transcribes the recording and keeps the time of every word.
  2. The text is checked by category. The transcript is checked for insults, hate speech, profanity and the other categories you ask for, the way a typed message is.
  3. Each finding gets its time. The answer gives the category, how sure the check is, and the start and end of the words that raised it.

What makes it harder than text: accents and dialects, background noise and music, several people talking at once, two languages in one sentence, and very short clips. Test with recordings from your own users before you set your lines.

What to do with a finding

  1. Decide per category. Hate speech may block the message at once; profanity may only add a warning; an insult may go to a moderator. Each category and each confidence band gets its own action.
  2. Hold or deliver. For one-to-one messages, such as on a dating app, check before delivery and hold what is flagged. For group chats and recordings that stay online, deliver and check in the background, then remove what breaks a rule.
  3. Play from the second. Show the moderator the flagged span and play from its start. On recordings that stay published, mute or cut only that span.
  4. Look at the sender. Several flagged messages in a day are a pattern; one is a mistake. Keep the sender's id with each check.
  5. Explain and allow appeals. Tell the sender which rule the message broke, and let them ask for a second look.

How Detectivision handles it

Send the address of the recording to POST /api/v1/moderation with "type": "audio_moderation". The speech is transcribed with the time of every word and checked for your flags: profanity, insult, hate, sexual, self_harm and bad_habits. Each finding comes back with its start and end in seconds from the beginning of the recording.

Request
curl https://api.detectivision.ai/api/v1/moderation \
  -H "Api-Key: $DETECTIVISION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "audio_moderation",
    "input": "https://example.com/voice/msg_5521.mp3",
    "async": true,
    "metadata": { "senderId": "u_481", "chatId": "c_9920" }
  }'
Response
{
  "id": 1071,
  "type": "audio_moderation",
  "mode": "capture",
  "status": "completed",
  "flagged": true,
  "flags": [
    {
      "flag": "insult",
      "confidence": 0.91,
      "detections": [
        {
          "label": "insult",
          "confidence": 0.91,
          "start": 12.4,
          "end": 13.8
        }
      ]
    }
  ],
  "checked": ["hate", "insult", "profanity", "sexual", "self_harm"],
  "unchecked": [],
  "tookMs": 2300,
  "usage": { "charged": 1, "remaining": 1999 },
  "metadata": { "senderId": "u_481", "chatId": "c_9920" }
}

Sent with "async": true, the API answers at once with the request's id and the result comes to your webhook, signed, with your metadata. Values in the example are illustrative.

What you sendThe address of a recording: a voice message, a call, a podcast episode, the sound of a video
What comes backThe flags raised, each with its confidence, and the start and end of each finding in seconds
LanguagesEnglish, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian, Hindi, Chinese and Japanese
LengthUp to 5 minutes of sound in one check
Price1 audio credit per started minute of sound by webhook, twice that for an answer at once. A 40-second voice message is 1 credit by webhook. The Pro plan includes 2,000 audio credits
ModeratorsLogs in the dashboard, your own actions such as Warn or Ban, and a moderation.action webhook to your system

Speech in a live stream is checked the same way as it comes in, next to the stream's frames.

Speech moderation APIs compared

Moderating speech: what each API publishesAs read on 5 November 2026
APICategoriesLanguages for moderationTime of a finding
Detectivision audio moderationProfanity, insults, hate speech, sexual content, self-harm, bad habitsEnglish, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian, Hindi, Chinese, JapaneseStart and end in seconds for each finding
Hive audio moderationSexual, violence, hate, bullyingEnglish, Spanish, Portuguese, French, Hindi, GermanA timestamp and a confidence for each detected word
Amazon Transcribe toxicity detectionProfanity, hate speech, sexual, insults, violence or threat, graphic, harassment or abuseUS English, batch transcriptions onlyA score for each speech segment, the speech between natural pauses
OpenAI moderationIts text and image categoriesIts moderation guide lists no languagesIts guide says the model "doesn't classify audio": transcribe first, then send the text

Each company's facts are from its own pages, as read on 5 November 2026. Detectivision is not affiliated with any of these companies. Hive's docs list mp3, ogg, wav, m4a and flac among its audio formats; Amazon says its toxicity detection also uses tone and pitch, not only the words.

Start with your own recordings

Take voice messages your moderators have already judged, removed and approved, in each language your users speak. Send them through the dashboard's Playground or the API, and count, for each flag, the abuse it missed and the harmless messages it flagged. Then set a line per flag: act on its own above it, and send the band below it to a person who plays the flagged seconds.

Questions

Frequently asked

Can an API detect abuse in voice messages?

Yes. A speech moderation API turns the recording into text with the time of every word and checks it by category. Detectivision's audio moderation checks speech for profanity, insults, hate speech, sexual content, self-harm and bad habits, and gives each finding with its start and end in seconds.

How do I find where in a recording the abuse is?

Use an API that returns the time of each finding. Detectivision gives start and end in seconds from the beginning of the recording, so a moderator plays only that part and your app can mute or cut it.

Which languages can voice messages be in?

Detectivision's audio moderation understands English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian, Hindi, Chinese and Japanese, the same 12 languages as its text moderation.

How much does it cost to check a voice message?

On Detectivision a recording costs 1 audio credit per started minute of sound when the answer comes by webhook, and twice that when you wait for it. A 40-second voice message is 1 credit by webhook. One check takes up to 5 minutes of sound.

Should a flagged voice message be deleted automatically?

Only for the categories and confidence your rules are sure about. Hold the rest before delivery or send them to a moderator, who plays the flagged seconds and decides. Tell the sender why a message was held.

Can the speech of a live stream be checked the same way?

Yes. Detectivision checks the speech of a live stream as it comes in, next to its frames; see live stream moderation.

Related articles
  • Speech in podcasts, voice messages and recordings is transcribed and checked for profanity, insults and hate speech, with the exact seconds of each.

  • Moderate live streams and cameras as they air: RTSP, RTMP, HLS, SRT. Frames and speech are checked for your flags, paid for the frames checked.

  • Check profile photos, bios and chat messages on your dating app for nudity, harassment, hate and scams, in 12 languages, with one API.

  • Check in-game chat, player names and uploaded images for insults, hate, sexism and sexual content, in 12 languages, with one API.

  • Why English-first moderation misses Arabic and Turkish abuse, which APIs list both languages for which categories, and how to test one on your own messages.

Sources
  1. Audio moderation API, Detectivision, read on 5 November 2026
  2. Credits and billing (docs): audio, a unit per started minute of sound, Detectivision, read on 5 November 2026
  3. Introduction (docs): what each moderation type takes and returns, Detectivision, read on 5 November 2026
  4. Webhooks (docs), Detectivision, read on 5 November 2026
  5. Audio Moderation & Speech to Text, Hive, read on 5 November 2026
  6. Detecting toxic speech (Amazon Transcribe Developer Guide), Amazon Web Services, read on 5 November 2026
  7. Moderation (OpenAI API guide), OpenAI, read on 5 November 2026