Request API

Use this API to moderate a specified audio stream.

DeepCleer Audio Stream Moderation streams a live audio source from a public URL or a supported RTC provider, slices it into segments, and continuously pushes per-segment moderation results to your callback URL.

API Description

The Audio Stream Moderation API detects risks such as political sensitivity, pornography, advertising, terrorism, abuse, prohibited songs, and copyrighted songs in live or recorded audio streams. It can also identify business attributes such as gender, age, timbre, language, audio scene, singing, minors, and human-voice authenticity to support your business scenarios.

Submit a stream URL or RTC pull configuration once; DeepCleer maintains the pull, segments the audio, and continuously delivers moderation results to your callback URL until the stream ends or you stop the task.

Requirements

ItemSpecification
ProtocolHTTP or HTTPS
MethodPOST
EncodingUTF-8
FormatAll request and response parameters use JSON

Stream Pull Retry Mechanism

To guard against transient network failures, DeepCleer automatically retries failed stream pulls. The retry policy varies by stream type:

Stream SourceRetry CountRetry Interval
Standard rtmp / http / hls125s, 10s, 15s, … (incrementing by 5s, capped at 60s)
Agora SDK recording20s (immediate retries)
Zego SDK recording1030s between each retry

If all retries fail the task is closed and (when returnFinishInfo is 1) a stream-end callback is delivered with an auxInfo.errorCode describing the failure.

Timeout Suggestion

Recommended request timeout: 5 seconds.

ℹ️

This timeout applies to the synchronous acknowledgement only. Moderation results are delivered asynchronously through your callback URL once the stream pull has stabilized.

Callback Mechanism

When DeepCleer pushes a result to your callback URL and your endpoint responds with HTTP 200, the delivery is considered successful. If any other status code is returned (or the request fails), the system retries up to 20 times.


Request

Request URL

ClusterEndpoint
Silicon Valleyhttp://api-audiostream-gg.fengkongcloud.com/audiostream/v4
Singaporehttp://api-audiostream-xjp.fengkongcloud.com/audiostream/v4

Request Parameters

Top-Level Parameters

ParameterTypeRequiredMax LengthDescription
accessKeystringYes20API authentication key. The default accessKey is sent in your onboarding email.
appIdstringYes64Application identifier, such as web for your web application or app for your mobile app. The default appId is sent in your onboarding email. Contact DeepCleer if you need a new appId.
eventIdstringYes64Event identifier used to distinguish moderation scenarios in your application, such as voiceMessage for chat voice messages or liveAudio for livestream audio. The default eventId is sent in your onboarding email. Contact DeepCleer if you need a new eventId.
typestringConditionalRisk detection types. Either type or businessType (or both) must be provided. See Detection Types. Combine multiple types with underscores, e.g. POLITY_EROTIC_MOAN.
businessTypestringConditionalBusiness detection labels. Either type or businessType (or both) must be provided. See Business Detection Types. Combine multiple types with underscores. When detecting timbre, singing, or language, GENDER must be included.
dataobjectYes1 MBRequest payload containing stream and user metadata. See data Object Parameters.
callbackstringYesURL that receives asynchronous moderation results. Supports HTTP and HTTPS.
acceptLangstringNoLanguage for returned labels. en (default): English. zh: Chinese.

Detection Types

Values for the type field. Combine multiple values with underscores (e.g. POLITY_EROTIC_DIRTY).

ValueDescription
POLITYPolitically sensitive content
EROTICPornographic content
ADVERTAdvertising content
BANProhibited content
VIOLENTViolent or terrorism-related content
MOANSexual moaning
AUDIOPOLITICALVoiceprint of top political leaders
ANTHENNational anthem detection
DIRTYVerbal abuse
ADLAWAdvertising-law violations
SINGSinging detection
MINORMinor speaker detection
BANEDAUDIOProhibited songs
COPYRIGHTSONGSCopyrighted songs
VOICEHuman-voice attribute (e.g. synthesized / forged voice)

Business Detection Types

Values for the businessType field. Combine multiple values with underscores (e.g. GENDER_TIMBRE_SING_LANGUAGE).

ValueDescription
GENDERSpeaker gender
AGESpeaker age
TIMBRESpeaker timbre
SINGSinging detection
LANGUAGELanguage identification
VOICEHuman-voice attribute
AUDIOSCENEAudio scene

data Object Parameters

ParameterTypeRequiredMax LengthDescription
tokenIdstringYes64User account identifier. Recommended to pass the user ID for behavioral risk detection.
btIdstringYes128Unique audio identifier used to query a specific stream.
streamTypestringYesStream source type. See Stream Types. When using an RTC SDK recording option (Agora, Zego, TRTC, Volc, Giants, Aliyun, NetEase Yunxin), additional recording fees may be charged on the RTC provider's side — please consult the provider for details.
urlstringConditionalLive stream URL. Required when streamType is NORMAL.
langstringNoAudio stream language. Default: zh. See Supported Languages. Cluster-specific support: see the Request URL table.
zegoParamobjectConditionalZego pull configuration. Required when streamType is ZEGO. See zegoParam Object.
agoraParamobjectConditionalAgora pull configuration. Required when streamType is AGORA. See agoraParam Object.
trtcParamobjectConditionalTRTC pull configuration. Required when streamType is TRTC. See trtcParam Object.
volcParamobjectConditionalVolcengine pull configuration. Required when streamType is VOLC. See volcParam Object.
ginParamobjectConditionalGiants pull configuration. Required when streamType is GIN. See ginParam Object.
aliParamobjectConditionalAliyun pull configuration. Required when streamType is ALI. See aliParam Object.
yunxinParamobjectConditionalNetEase Yunxin pull configuration. Required when streamType is YUNXIN. See yunxinParam Object.
returnPreTextint32NoWhether to return the transcribed text of the segment immediately preceding a violating segment. 0 (default): do not return. 1: return.
returnPreAudioint32NoWhether to return the audio URL of the segment immediately preceding a violating segment. 0 (default): do not return. 1: return a 20-second clip combining the preceding and current segments.
returnFinishInfoint32NoWhether to push a stream-end callback. 0 (default): no end callback. 1: send an end callback with statCode set. Recommended: 1 — without it no callback will be produced when the stream ends.
returnAllTextint32NoCallback granularity. 0 (default): only push when violations are detected. 1: push the latest 10-second result every 10 seconds regardless of risk level. Recommended: 1 — without it no callback will be produced during silent or risk-free periods.
extraobjectNoAuxiliary parameters.
passThroughobjectNoClient pass-through field. DeepCleer does not process this field; it is returned as-is in the callback.
liveTitlestringNoRoom title (used when human review is enabled).
anchorNamestringNoUser nickname (used when human review is enabled).
audioDetectStepint32NoSegment-sampling step. Range 136; default reviews every segment. 1 reviews odd-numbered segments only, 2 reviews one of every three segments, and so on.
receiveTokenIdstringConditional64Message receiver's tokenId. Alphanumeric with underscores and hyphens, up to 64 characters. Required when eventId is message.
deviceIdstringNo128DeepCleer device fingerprint identifier, generated by the DeepCleer SDK for user behavior analysis.
ipstringNo64Client public IP address (IPv4 or IPv6) for IP-based user behavior analysis.
levelint32NoUser level for configuring different interception strategies. See User Levels.
genderint32NoUser gender. 0: unknown. 1: male. 2: female.

Stream Types

Values for the streamType field.

ValueDescription
NORMALStandard public URL pull. Supports rtmp, rtmps, hls, http, https protocols and flv, m3u8 and similar formats.
ZEGOZego SDK recording
AGORAAgora SDK recording
TRTCTencent TRTC recording
VOLCVolcengine recording
GINGiants recording
ALIAliyun recording
YUNXINNetEase Yunxin

Supported Languages

Values for the lang field. Default: zh.

ValueLanguage
zhChinese
enEnglish
arArabic
hiHindi
esSpanish
frFrench
ruRussian
ptPortuguese
idIndonesian
deGerman
jaJapanese
trTurkish
viVietnamese
itItalian
thThai
tlFilipino
koKorean
msMalay
autoAutomatic language detection (contact DeepCleer to enable)

User Levels

ValueDescription
0Lowest-level user (e.g., newly registered, completely inactive, or level-0 users)
1Lower-level user (e.g., low activity or low-level users)
2Mid-level user (e.g., moderately active or mid-level users)
3Higher-level user (e.g., highly active or high-level users)
4Highest-level user (e.g., paying users, VIP users)

zegoParam Object

ParameterTypeRequiredDescription
tokenIdstringYesZego identify_token used for login. See the Zego documentation. Each request must regenerate this token; it uniquely identifies the moderation request.
streamIdstringConditionalStream identifier (uniquely maps to one audio stream). At least one of streamId or roomId must be provided.
roomIdstringConditionalRoom identifier (uniquely maps to one room). At least one of streamId or roomId must be provided.
isMixingEnabledbooleanNoRecording mode. true: mixed stream — all users in the room are merged into a single recorded stream. When both streamId and roomId are provided, streamId takes precedence. false: separated streams — each user is recorded individually. In this case roomId is required and streamId must not be provided.
initDomainint32ConditionalRequired when the Zego client init uses an isolation domain or random userId. Values: 0 default version; 1 isolation domain only; 2 isolation domain + random userId; 3 SDK update with bug fixes; 4 custom SEI; 5 VAD silence detection (token uniqueness check, must regenerate per request); 6 per-stream submission control in room-scoped pull mode. Recommended: 6. Default: 0.

agoraParam Object

ParameterTypeRequiredDescription
appIdstringYesAgora-issued appId. Distinct from the DeepCleer appId.
channelstringYesAgora channel name.
tokenstringNoOptional Agora token for higher-security accounts. See the Agora documentation. Set the validity period longer than the channel duration to avoid expiry. Maximum Agora token validity is 24 hours; for longer channels enable returnFinishInfo: 1 and watch for auxInfo.errorCode = 3005 in the stream-end callback to know when to refresh the token.
uidint32ConditionalUnsigned 32-bit user ID. Required when token is provided and must match the uid used to generate the token. Must be different from any uid actually present in the room.
isMixingEnabledbooleanNotrue (default): mixed stream — one stream per room. false: separated streams — one stream per microphone slot.
channelProfileint32NoChannel profile. 0 (default): Communication (1-on-1 or group, all users may speak). 1: Live broadcast (host / audience roles).
subscribeModestringNoSubscription mode. AUTO (default): subscribe to all streams in the room. UNTRUSTED: with untrustedUserIdList, subscribe only to the listed users (separated streams only). TRUSTED: with trustedUserIdList, subscribe only to users not in the list (separated streams only).
trustedUserIdListarrayNoTrusted user list. Active when subscribeMode = TRUSTED. May be empty. Each element is a stringified uint32 value, e.g. ["123","456"].
untrustedUserIdListarrayNoUntrusted user list. Active when subscribeMode = UNTRUSTED. Must be non-empty. Each element is a stringified uint32 value, e.g. ["123","456"].

trtcParam Object

ParameterTypeRequiredDescription
sdkAppIdint32YesTencent-issued sdkAppId.
demoSencesint32YesRecording type. 2: separated stream recording. 4: mixed stream recording. (Note: the source spelling demoSences is preserved for wire compatibility; this appears to be a typo of demoScenes and is a candidate for v5 cleanup.)
userIdstringYesRecording-side userId, up to 32 bits. Allowed characters: a-z, A-Z, 0-9, underscore, hyphen.
userSigstringYesVerification signature for the recording userId (functions as the login password).
roomIdint32ConditionalNumeric room ID (range 14294967294). One of roomId or strRoomId must be provided. When both are present, roomId takes precedence.
strRoomIdstringConditionalString room ID (allowed characters: a-z, A-Z, 0-9, underscore, hyphen). One of roomId or strRoomId must be provided. When both are present, roomId takes precedence.
uidstringNoSpecific user ID to moderate. If omitted, all publishing users in the room are pulled and moderated. To moderate a subset of users, submit multiple requests with different recording-side userId / userSig. Distinct from the recording userId.

volcParam Object

ParameterTypeRequiredDescription
appIdstringYesVolcengine-issued appId. Distinct from the DeepCleer appId.
roomIdstringYesRoom number.
tokenstringYesVolcengine authentication token. See the Volcengine documentation.
userIdstringYesRecording-side userId.
subscribeModestringNoSubscription mode. AUTO (default): subscribe to all streams in the room. UNTRUSTED: with untrustedUserIdList, subscribe only to listed users — list must be non-empty or the request fails. TRUSTED: with trustedUserIdList, subscribe only to users not in the list — if no qualifying user joins within a grace period, DeepCleer will end the moderation.
trustedUserIdListarrayNoTrusted user list. Active when subscribeMode = TRUSTED. May be empty.
untrustedUserIdListarrayNoUntrusted user list. Active when subscribeMode = UNTRUSTED. Must be non-empty.

ginParam Object

ParameterTypeRequiredDescription
tokenIdstringYesRoom token used by the pull endpoint to log in to the room. Provided by Giants.
roomIdstringYesRoom number (uniquely maps to one room). The server pulls and records on a per-room basis.
isMixingEnabledbooleanNotrue (default): mixed stream — all users in the room merged into one stream. false: separated streams — each user recorded individually.
ipstringYesDesignated server IP address.
portstringYesDesignated port.

aliParam Object

ParameterTypeRequiredDescription
tokenstringYesAuthentication token used by the pull endpoint to join the channel. See the Aliyun documentation. A new token must be generated for every moderation request.
roomstringYesRoom ID. Non-empty, must exactly match the channelID used to generate the token. The server pulls and records on a per-room basis. The same room will not trigger duplicate pulls.
userIdstringYesPull-bot user ID. Must exactly match the userId used to generate the token. Non-empty.
isMixingEnabledbooleanNotrue (default): mixed stream — all users in the room merged into one stream. false: separated streams — each user recorded individually.

yunxinParam Object

ParameterTypeRequiredDescription
tokenstringYesAuthentication token used by the pull endpoint to join the channel. See the NetEase Yunxin documentation. A new token must be generated for every moderation request.
cnamestringYesChannel name. Non-empty, must exactly match the cname used to generate the token.
uidint32YesPull-bot uid. Must exactly match the uid used to generate the token.
appKeystringYesApp key issued by NetEase Yunxin.

Response

The synchronous response is an acknowledgement only — it confirms that DeepCleer has accepted the moderation task. Per-segment moderation results are delivered asynchronously through the callback URL you provided.

Response Parameters

ℹ️

Parameters other than code, message, and requestId are only guaranteed to be returned when code is 1100.

ParameterTypeRequiredDescription
requestIdstringYesUnique DeepCleer request identifier.
codeint32YesResponse code. See Response Codes.
messagestringYesResponse message corresponding to the code.
detailobjectNoDetailed information for error scenarios. See errorCode and dupRequestId below.
errorCodeint32NoDetailed status code. 1001: duplicate stream submission.
dupRequestIdstringNoReturned when errorCode is 1001 (duplicate submission). If the original request response was lost but the stream has already entered moderation, the original requestId is unknown to the caller. Resubmit the same stream and use the returned dupRequestId to call the close-moderation endpoint.

Response Codes

CodeMessage
1100Success
1901QPS or stream-count limit exceeded
1902Invalid parameters
1903Service failure
1904Stream pull failure
9101Unauthorized operation
⚠️

The synchronous response field is named errorCode (camelCase). This differs from the Video Stream Moderation sync response, which uses lowercase errorcode. Both are documented as-returned and are candidates for casing alignment in the v5 cleanup.


Callback Mechanism

Once the stream pull stabilizes, DeepCleer continuously pushes per-segment moderation results to your callback URL. The push cadence depends on returnAllText:

  • returnAllText = 0: a callback is sent only when a segment is found to contain a violation.
  • returnAllText = 1: a callback is sent every 10 seconds covering the most recent 10-second segment, regardless of risk level.

Payloads are delivered as JSON in the HTTP request body.

Callback Parameters

ParameterTypeRequiredDescription
requestIdstringYesUnique DeepCleer identifier for this stream segment.
btIdstringYesClient-side audio identifier (echoed from the request).
codeint32YesResponse code. 1100: success. Other codes match the synchronous response. Fields other than message and requestId are only present when code is 1100.
messagestringYesResponse message corresponding to the code.
statCodeint32NoModeration lifecycle status. 0: in progress (regular per-segment result). 1: moderation finished (stream-end callback). Only present when returnFinishInfo is 1.
Note: the semantics here differ from the Video Stream Moderation API, where statCode 0 means a regular result and 1 means a stream-end callback at the same parameter location. Treat the two APIs as having distinct callback lifecycles even if the field name matches.
requestParamsobjectYesEcho of the original request parameters.
audioDetailobjectNoPer-segment audio moderation result. Returned when code is 1100 and statCode is 0. See audioDetail Object.
auxInfoobjectNoStream-end auxiliary information. Returned when statCode is 1. See Stream-End auxInfo.

audioDetail Object

ParameterTypeRequiredDescription
audioUrlstringYesURL of the audio segment.
riskLevelstringYesDisposition recommendation. PASS: normal. REVIEW: suspicious. REJECT: violation.
riskLabel1stringYesLevel 1 risk label. Returns normal when riskLevel is PASS.
riskLabel2stringYesLevel 2 risk label. Empty when riskLevel is PASS.
riskLabel3stringYesLevel 3 risk label. Empty when riskLevel is PASS.
riskDescriptionstringYesRisk description. Returns "Normal" when riskLevel is PASS. Hits against custom lists return "Matched custom list". Otherwise format: "Level 1: Level 2: Level 3". For reference only — do not use for programmatic logic.
audioTextstringNoTranscribed text of the segment. When returnPreText is 1, contains both the preceding and current segment text; when 0, contains the current segment text only.
preAudioUrlstringNoURL of a 20-second clip combining the preceding and current audio segments. Returned only when returnPreAudio is 1.
riskDetailobjectNoDetailed risk information. Returned when code is 1100. See riskDetail Object.
auxInfoobjectYesAuxiliary information for this segment. See Segment auxInfo.
businessLabelsarrayNoBusiness labels for this audio segment (gender, timbre, singing, etc.). See businessLabels Array.
allLabelsarrayNoAll risk labels detected for this segment. See allLabels Array.
tokenProfileLabelsarrayNoAccount attribute labels. Returned only when the labeling service is enabled. See Token Labels.
tokenRiskLabelsarrayNoAccount risk labels. Returned only when the labeling service is enabled. See Token Labels.
speakersarrayNoPer-second speaker activity within this segment. See speakers Array. Currently only present in Agora mixed streams.
vadCodeint32NoSilence flag for this segment. 0: silent segment. 1: non-silent segment.
audioTagsobjectNoLegacy audio attribute labels (gender, timbre, language, singing). See audioTags Object. For new integrations prefer businessLabels.

riskDetail Object

ParameterTypeRequiredDescription
riskSourceint32YesRisk source. 1000: no risk. 1001: text risk. 1003: audio risk.
audioTextstringNoTranscribed text used during moderation.
matchedListsarrayNoMatched custom list information. Returned only when a custom list is hit. See Matched Lists.
riskSegmentsarrayNoHigh-risk content segments. Present when political, terrorism, prohibited, competitive, or advertising-law content is detected. See Risk Segments.
Matched Lists
ParameterTypeRequiredDescription
namestringYesName of the matched list.
wordsarrayYesSensitive word details.
words[].wordstringYesThe matched sensitive word.
words[].positionarrayYesPosition of the sensitive word (0-indexed).
Risk Segments
ParameterTypeRequiredDescription
segmentstringNoHigh-risk content segment.
positionarrayNoPosition of the segment within the transcript (0-indexed).

Segment auxInfo

ParameterTypeRequiredDescription
audioStartTimestringYesAbsolute start time of the violating content within the stream. (Note: this field uses uppercase T here. The standalone Audio Sync/Async/Query APIs return the same conceptual field as audioStarttime (lowercase t). The on-the-wire casing is preserved as-returned and is a candidate for v5 alignment.)
audioEndTimestringYesAbsolute end time of the violating content within the stream. (Same casing-inconsistency note as audioStartTime.)
beginProcessTimeint64YesProcessing start time. 13-digit Unix timestamp in milliseconds (UTC).
finishProcessTimeint64YesProcessing finish time. 13-digit Unix timestamp in milliseconds (UTC).
userIdint32NoIn-room user ID for the speaker. Present only for Agora separated streams. Distinct from the agoraParam.uid used for token generation.
strUserIdstringNoIn-room user ID for the speaker. Present for separated streams of ALI, TRTC, ZEGO, VOLC, and GIN. Distinct from trtcParam.uid (TRTC separated) and aliParam.userId (Aliyun separated).
roomstringNoRoom number.
seiInfoarrayNoSEI information. Contact DeepCleer to enable.
passThroughobjectNoPass-through field. Same value as data.extra.passThrough from the request.

businessLabels Array

Each element in the array:

ParameterTypeRequiredDescription
businessLabel1stringNoLevel 1 business label.
businessLabel2stringNoLevel 2 business label.
businessLabel3stringNoLevel 3 business label.
businessDescriptionstringNoBusiness label description. Format: "Level 1: Level 2: Level 3". For reference only — do not use for programmatic logic.
probabilityfloatNoConfidence score (0–1).
confidenceLevelint32NoConfidence level (0–2). Higher values indicate greater confidence.

allLabels Array

Each element in the array:

ParameterTypeRequiredDescription
riskLabel1stringYesLevel 1 risk label.
riskLabel2stringYesLevel 2 risk label.
riskLabel3stringYesLevel 3 risk label.
riskDescriptionstringYesRisk reason. For reference only — do not use for programmatic logic.

speakers Array

Per-second speaker uid + volume sampling for the audio segment, ordered chronologically. The outer array contains up to 10 elements (one per sampled second). Each inner element is itself an array describing every speaker active at that second.

Currently only populated in Agora mixed stream moderation.

Each inner object:

ParameterTypeRequiredDescription
uidint32YesIn-room speaker uid.
volumeint32YesVolume level. Range 0255.

audioTags Object

Legacy audio attribute labels. Returned when the corresponding type value is requested. For new integrations, prefer the businessLabels array; the structure here is preserved for backwards compatibility.

ParameterTypeRequiredDescription
genderobjectNoGender label. Returned when type includes GENDER. See Gender Label.
timbrearrayNoTimbre labels. Returned when type includes TIMBRE. See Timbre Labels.
songint32NoSinging label. Returned when type includes SING. 0: no singing detected. 1: singing detected.
languageobjectNoLanguage label. Returned when type includes LANGUAGE. See Language Labels.
Gender Label
ParameterTypeRequiredDescription
labelstringYesGender label name. Possible values (Chinese as returned by the legacy API): 男性 (male), 女性 (female).
probabilityint32YesConfidence score on a 0100 scale. Higher values indicate greater confidence. (Legacy 0–100 scale — modern endpoints use a 0–1 scale; this is a v5-cleanup candidate.)
Timbre Labels

Each element in the array:

ParameterTypeRequiredDescription
labelstringYesTimbre category. Possible values (Chinese as returned by the legacy API): 大叔 (older male), 青年 (young male), 正太 (boy), 老年 (elderly), 女王 (mature woman), 御姐 (assertive woman), 少女 (young woman), 萝莉 (girl), 大妈 (older female).
probabilityint32YesConfidence score on a 0100 scale. Higher values indicate greater confidence. (Legacy 0–100 scale — see Gender Label note.)
Language Labels
ParameterTypeRequiredDescription
labelint32YesLanguage category. See Language Codes.
probabilityint32YesConfidence score on a 0100 scale. (Legacy 0–100 scale — see Gender Label note.)
Language Codes
ValueLanguage
0Mandarin Chinese
1English
2Cantonese
3Tibetan
4Uyghur
5Mongolian
6Korean
-1Other

Token Labels

Both tokenProfileLabels and tokenRiskLabels share the same structure:

ParameterTypeRequiredDescription
label1stringNoLevel 1 label.
label2stringNoLevel 2 label.
label3stringNoLevel 3 label.
descriptionstringNoLabel description. For reference only — do not use for programmatic logic.
timestampint64NoLabel assignment time. 13-digit Unix timestamp in milliseconds (UTC).

Stream-End auxInfo

Returned only in the stream-end callback (statCode = 1). Indicates why the moderation task ended.

ParameterTypeRequiredDescription
errorCodeint32YesStream-end error code. 3001: stream URL access failure (e.g. HTTP 404 / 403). 3002: invalid stream data (e.g. "Invalid data found when processing input"). 3003: stream not found (e.g. Zego error 197612). 3004: stream returned no audio data. 3005: pull token invalid or expired — refresh the token and resubmit (e.g. expired Agora token, invalid TRTC userSig).
streamTimeint64NoSubmitted stream duration. Returned in the final stream-end callback. When audioDetectStep is configured this value may differ from the actual stream length.
ℹ️

These auxInfo.errorCode values (30013005) are specific to streaming pull failures. They are distinct from the 2003 / 2007 codes used by the standalone Audio Sync, Async, and Query APIs, which describe file-fetch and decode failures. Integrators using both interfaces should map the two namespaces separately.


Examples

Request Example

{
  "accessKey": "xxxxx",
  "appId": "default",
  "eventId": "default",
  "type": "EROTIC_ADVERT_POLITY_DIRTY",
  "businessType": "GENDER_TIMBRE_SING_LANGUAGE",
  "callback": "xxxxx",
  "data": {
    "btId": "test1",
    "lang": "zh",
    "room": "room2",
    "url": "xxxxx",
    "streamType": "NORMAL",
    "returnAllText": 1,
    "returnPreText": 1,
    "returnPreAudio": 1,
    "tokenId": "2222"
  }
}

Synchronous Response Example

{
  "code": 1100,
  "message": "Success",
  "requestId": "b639042cbfe229359e672074762c5583"
}

Callback Example

{
  "requestId": "b639042cbfe229359e672074762c5583_2",
  "btId": "1637847086612",
  "code": 1100,
  "message": "Success",
  "audioDetail": {
    "audioTags": {
      "gender": {
        "label": "男性",
        "probability": 99
      },
      "language": [
        { "label": 0, "probability": 99 },
        { "label": 1, "probability": 0 }
      ],
      "song": 0,
      "timbre": [
        { "label": "大叔", "probability": 7 },
        { "label": "青年", "probability": 34 },
        { "label": "老年", "probability": 58 },
        { "label": "正太", "probability": 0 }
      ]
    },
    "audioText": "那就不好打吗?所以所以他小龙让掉也是合情合理。还要看这条,先锋啊,下一个节奏点可能就是个先锋,但这个先锋的时候,苏宁其实是可以打正面团战了,谢谢毛主任一直都",
    "audioUrl": "https://bj-voice-mp3-1251671073.cos.ap-beijing.myqcloud.com/MP3%2F20211125%2Fb639042cbfe229359e672074762c5583_2.mp3?...",
    "auxInfo": {
      "beginProcessTime": 1637847113897,
      "finishProcessTime": 1637847114514,
      "room": "test1"
    },
    "businessLabels": [
      {
        "businessDescription": "Minor: Minor: Minor",
        "businessLabel1": "minor",
        "businessLabel2": "weichengnianren",
        "businessLabel3": "weichengnianren",
        "confidenceLevel": 0,
        "probability": 0
      }
    ],
    "preAudioUrl": "https://bj-voice-mp3-1251671073.cos.ap-beijing.myqcloud.com/MP3%2F20211125%2Fb639042cbfe229359e672074762c5583_2_pre.mp3?...",
    "riskDescription": "Normal",
    "riskDetail": {
      "audioText": "那就不好打吗?所以所以他小龙让掉也是合情合理。还要看这条,先锋啊,下一个节奏点可能就是个先锋,但这个先锋的时候,苏宁其实是可以打正面团战了,谢谢毛主任一直都"
    },
    "riskLabel1": "normal",
    "riskLabel2": "normal",
    "riskLabel3": "normal",
    "riskLevel": "REJECT",
    "speakers": [
      [
        { "uid": 2, "volume": 100 },
        { "uid": 1, "volume": 255 },
        { "uid": 3, "volume": 50 }
      ],
      [
        { "uid": 2, "volume": 200 },
        { "uid": 3, "volume": 50 }
      ],
      [
        { "uid": 4, "volume": 255 }
      ]
    ]
  }
}