Start a Real-time STT task
Start a Real-time STT task
https://api.agora.io/v1/projects/{appId}/rtsc/speech-to-text/tasks
After you acquire
a builderToken
, call this method within 5 minutes to start speech-to-text conversion.
Request
Path parameters
The App ID of the project
Query parameters
The tokenName
value you obtained in the response body of the acquire
method.
Request body
BODYrequired
- languages array[string]required
The transcription languages to recognize. You can specify a maximum of 2 languages. Refer to Supported Languages for details.
- maxIdleTime integernullable
Default:
30
Possible values:
5 to 2592000
Maximum channel idle time, in seconds. When the specified time is exceeded, the transcription task ends automatically.
- rtcConfig objectrequired
- channelName stringrequired
The name of the channel to transcribe.
- subBotUid stringrequired
The ID of the bot that subscribes to the audio stream.
- subBotToken stringnullable
The token used by the subscribing bot for channel authentication. Required only when your project has App Certificate enabled. Generate this token on your token server. For details, see Token authentication.
- pubBotUid stringrequired
The ID of the bot that pushes subtitle information to the channel.
- pubBotToken stringnullable
The token used by the subtitle-pushing bot for channel authentication. Required only when your project has App Certificate enabled. Generate this token on your token server. For details, see Token authentication.
- subscribeAudioUids array[string]nullable
The user IDs of the audio streams you want to subscribe to. Specify this parameter only if you need to subscribe to specific users. Maximum array length: 3.
- cryptionMode integernullable
Possible values:
0 to 8
The encryption and decryption mode. When enabled, this mode is used for both decrypting incoming streams and encrypting outgoing subtitles.
0
: No encryption1
:AES_128_XTS
128-bit AES encryption, XTS mode2
:AES_128_ECB
128-bit AES encryption, ECB mode3
:AES_256_XTS
256-bit AES encryption, XTS mode4
:SM4_128_ECB
128-bit SM4 encryption, ECB mode5
:AES_128_GCM
128-bit AES encryption, GCM mode6
:AES_256_GCM
256-bit AES encryption, GCM mode7
:AES_128_GCM2
128-bit AES encryption, GCM mode, requires key and salt8
:AES_256_GCM2
256-bit AES encryption, GCM mode, requires key and salt The decryption method must match the encryption method set for the channel.
- secret stringnullable
The encryption/decryption key. Required when
cryptionMode
is not0
. - salt stringnullable
A Base64-encoded, 32-byte encryption/decryption salt. Required only when
cryptionMode
is7
or8
. - enableJsonProtocol booleannullable
Default:
false
Set the encoding format of the subtitle data pushed to the channel.
true
: Use JSON to push subtitles and compress data with gzip. Uses less bandwidth, but requires decoding.false
: Use Protobuf to push subtitles (default). The data volume is smaller. Suitable for scenarios with high transmission efficiency requirements.
- transferMode array[string]nullable
Select the channel to push, RTM or RTC
- captionConfig objectnullable
- sliceDuration integernullable
Default:
60
Possible values:
5 to 28800
The slice size of the recorded subtitle file, in seconds.
- storage objectrequired
- accesskey stringrequired
The access key of the third-party cloud storage.
- secretkey stringrequired
The secret key of the third-party cloud storage.
- bucket stringrequired
The bucket name of the third-party cloud storage.
- vendor integerrequired
Possible values:
1
,5
,6
The third-party cloud storage platform:
1
: Amazon S35
: Microsoft Azure6
: Google Cloud
- region integerrequired
The region information for the third-party cloud storage. To ensure successful and real-time uploading of recorded files, the cloud storage region must match the region of the application server where you initiate the request. For example, if your App server is in East US, set the cloud storage region to East US as well. See third-party storage regions for details.
- fileNamePrefix array[string]nullable
The storage location of the recorded file in the third-party cloud storage. The prefix length (including slashes) must not exceed 128 characters. The following characters are supported:
- Lowercase English letters (a-z)
- Uppercase English letters (A-Z)
- Numbers (0-9)
Symbols like slashes, underscores, and brackets must not appear in the string.
- translateConfig objectnullable
- forceTranslateInterval integernullable
Default:
3
Possible values:
2 to 5
The time interval for forced translation, in seconds.
- languages arrayrequired
The translation language array. You can specify a maximum of 2 different source languages. The source language and target language must be different, otherwise an error is reported.
Each array item is an object with:- source stringrequired
The source language for translation. Refer to Supported Languages for details.
- target array[string]required
The target languages for translation. You can specify a maximum of 5 target languages for each source language. Refer to Supported Languages for details.
Response
-
If the returned status code is
200
, the request was successful. The response body contains the result of the request.OK
- taskId stringrequired
The unique identifier of this transcription task.
- createTs integerrequired
The Unix timestamp (in seconds) when the transcription task was created.
- status stringrequired
The current status of the transcription task:
IDLE
: Task not initializedPREPARING
: Task has received an initialization requestPREPARED
: Task initialization completedSTARTING
: Task is beginning to startCREATED
: Task startup partially completedSTARTED
: Task startup fully completedIN_PROGRESS
: Task is currently runningSTOPPING
: Task is in the process of being pausedSTOPPED
: Task has been terminatedFAILURE_STOP
: Task termination failed
-
If the returned status code is not
200
, the request failed. Refer to themessage
field to understand the possible reasons for failure.Non-200
- message string
The reason why the request failed.
Authorization
This endpoint requires Basic Auth.
Request example
- curl
- Python
- Node.js
Response example
- 200
- Non-200