This document provides a detailed description that makes it easy for Unity project developers to debug and integrate the APIs for Game Multimedia Engine (GME).
This document only provides the main APIs to help you get started with GME to debug and integrate the APIs.
GME provides two services: voice chat service and voice message and speech-to-text service, both of which rely on key APIs such as Init and Poll.
Note on Init APIIf you need to use voice chat and voice message services at the same time, you only need to call
Init
API once.
Refer to Integrating SDK to integrate the SDK into the project.
On the SDK download guide page, download the appropriate client SDKDownLoad.
using TencentMobileGaming;
Get the Context
instance by using the ITMGContext
method instead of QAVContext.GetInstance()
.
int ret = ITMGContext.GetInstance().Init(sdkAppId, openID);
//class ITMGContext
public abstract int Init(string sdkAppID, string openID);
Parameter | Type | Description |
---|---|---|
sdkAppId | String | AppId provided by the GME service from the Tencent Cloud console |
OpenId | String | OpenId can only be in Int64 type, which is passed after being converted to a string. |
int ret = ITMGContext.GetInstance().Init(sdkAppId, openID);
// Determine whether the initialization is successful by the returned value
if (ret != QAVError.OK)
{
Debug.Log("SDK initialization failed:"+ret);
return;
}
Event callbacks can be triggered by periodically calling the Poll
API in update
. The Poll
API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.
Refer to the EnginePollHelper file in the demo.
public void Update()
{
ITMGContext.GetInstance().Poll();
}
// Delegate function:
public delegate void QAVEnterRoomComplete(int result, string error_info);
// Event-triggered function:
public abstract event QAVEnterRoomComplete OnEnterRoomCompleteEvent;
Delegate function:
public delegate void QAVExitRoomComplete();
Event-triggered function:
public abstract event QAVExitRoomComplete OnExitRoomCompleteEvent;
Generate AuthBuffer
for encryption and authentication of relevant features.
To get authentication for voice message and speech-to-text, the room ID parameter must be set to null
.
QAVAuthBuffer GenAuthBuffer(int appId, string roomId, string openId, string key)
Parameter | Type | Description |
---|---|---|
appId | int | AppId from the Tencent Cloud console. |
roomId | string | Room ID, which can contain up to 127 characters (For voice message, enter "null".) |
openId | string | User ID, which is the same as openId during initialization. |
key | string | Permission key from the Tencent Cloud console. |
public static byte[] GetAuthBuffer(string AppID, string RoomID,string OpenId, string AuthKey){
return QAVAuthBuffer.GenAuthBuffer(int.Parse(AppID), RoomID, OpenId, AuthKey);
}
This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry. The returned value of 0 indicates successful API call but not successful room entry.
For more information on how to choose a room audio type, please see Sound Quality Selection.
ITMGContext EnterRoom(string roomId, int roomType, byte[] authBuffer)
Parameter | Type | Description |
---|---|---|
roomId | String | Room ID, which can contain up to 127 characters |
roomType | int | Room audio type |
authBuffer | byte[] | Authentication code |
ITMGContext.GetInstance().EnterRoom(strRoomId, ITMGRoomType.ITMG_ROOM_TYPE_FLUENCY, byteAuthbuffer);
After the user enters the room, a room entry notification will be received and identified in the listener function for processing. A successful callback (err = 0) means that the room entry is successful, and the billing starts. If the total call duration on the day is below 700 minutes, no fees will be incurred.
Sample code
Sample code for processing the callback:
// Listen on an event:
ITMGContext.GetInstance().OnEnterRoomCompleteEvent += new QAVEnterRoomComplete(OnEnterRoomComplete);
// Process the event listened on:
void OnEnterRoomComplete(int err, string errInfo)
{
if (err != 0) {
ShowLoginPanel("error code:" + err + " error message:" + errInfo);
return;
}
else{
// Entered room successfully
}
}
Error code
Error Code Value | Cause and Suggested Solution |
---|---|
7006 | Authentication failed. Possible causes:
|
7007 | Already in another room. |
1001 | The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned. |
1003 | The user was already in the room and called the room entering API again. |
1101 | Make sure that the SDK is initialized, `openId` complies with the rules, the APIs are called in the same thread, and the `Poll` API is called normally. |
This API is used to enable/disable the mic. Mic and speaker are not enabled by default after room entry.
// Listen on an event:
ITMGContext.GetInstance().OnEnterRoomCompleteEvent += new QAVEnterRoomComplete(OnEnterRoomComplete);
// Process the event listened on:
void OnEnterRoomComplete(int err, string errInfo)
{
if (err != 0) {
ShowLoginPanel("error code:" + err + " error message:" + errInfo);
return;
}
else{
// Entered room successfully
// Enable mic
ITMGContext.GetInstance().GetAudioCtrl().EnableMic(true);
}
}
This API is used to enable/disable the speaker.
// Listen on an event:
ITMGContext.GetInstance().OnEnterRoomCompleteEvent += new QAVEnterRoomComplete(OnEnterRoomComplete);
// Process the event listened on:
void OnEnterRoomComplete(int err, string errInfo)
{
if (err != 0) {
ShowLoginPanel("error code:" + err + " error message:" + errInfo);
return;
}
else{
// Entered room successfully
// Enable the speaker
ITMGContext.GetInstance().GetAudioCtrl().EnableSpeaker(true);
}
}
This API is called to exit the current room. It needs to wait for and process the callback for exit.
ITMGContext.GetInstance().ExitRoom();
After the user exits a room, a callback will be returned. The sample code is as shown below:
Listen on an event:
ITMGContext.GetInstance().OnExitRoomCompleteEvent += new QAVExitRoomComplete(OnExitRoomComplete);
Process the event listened on:
void OnExitRoomComplete(){
// Send a callback after room exit
}
Call authentication initialization after initializing the SDK. For more information on how to get the authBuffer
, please see genAuthBuffer
(the voice chat authentication information API).
ITMGPTT int ApplyPTTAuthbuffer (byte[] authBuffer)
Parameter | Type | Description |
---|---|---|
authBuffer | String | Authentication |
UserConfig.SetAppID(transform.Find ("appId").GetComponent<InputField> ().text);
UserConfig.SetUserID(transform.Find ("userId").GetComponent<InputField> ().text);
UserConfig.SetAuthKey(transform.Find("authKey").GetComponent<InputField>().text);
byte[] authBuffer = UserConfig.GetAuthBuffer(UserConfig.GetAppID(), UserConfig.GetUserID(), null,UserConfig.GetAuthKey());
ITMGContext.GetInstance ().GetPttCtrl ().ApplyPTTAuthbuffer(authBuffer);
This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call StopRecording
. The callback will be returned after the recording is stopped.
ITMGPTT int StartRecordingWithStreamingRecognition(string filePath)
ITMGPTT int StartRecordingWithStreamingRecognition(string filePath, string speechLanguage,string translateLanguage)
Parameter | Type | Description |
---|---|---|
filePath | String | Path of stored audio file |
speechLanguage | String | The language in which the audio file is to be converted to text. For parameters, please see Language Parameter Reference List |
translateLanguage | String | The language into which the audio file will be translated. For parameters, please see Language Parameter Reference List (This parameter is currently unavailable. Enter the same value as that of speechLanguage ) |
string recordPath = Application.persistentDataPath + string.Format("/{0}.silk", sUid++);
int ret = ITMGContext.GetInstance().GetPttCtrl().StartRecordingWithStreamingRecognition(recordPath, "cmn-Hans-CN","cmn-Hans-CN");
After streaming speech recognition is started, you need to listen for callback messages in the callback function onEvent
. The event message is ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
, namely returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
The event message will be identified in the OnEvent function
based on the actual needs. The passed parameters include the following four messages.
Message Name | Description |
---|---|
result | A return code for judging whether the streaming speech recognition is successful. |
text | Text converted from speech |
file_path | Local path of stored recording file |
file_id | Backend URL address of recording file, which will be retained for 90 days |
Sample code
// Listen on an event:
ITMGContext.GetInstance().GetPttCtrl().OnStreamingSpeechComplete +=new QAVStreamingRecognitionCallback (OnStreamingSpeechComplete);
ITMGContext.GetInstance().GetPttCtrl().OnStreamingSpeechisRunning += new QAVStreamingRecognitionCallback (OnStreamingRecisRunning);
// Process the event listened on:
void OnStreamingSpeechComplete(int code, string fileid, string filepath, string result){
// Callback for streaming speech recognition
}
void OnStreamingRecisRunning(int code, string fileid, string filePath, string result){
if (code == 0)
{
setBtnText(mStreamBtn, "Streaming");
InputField field = transform.Find("recordFilePath").GetComponent<InputField>();
field.text = filePath;
field = transform.Find("downloadUrl").GetComponent<InputField>();
field.text = "Stream is Running";
field = transform.Find("convertTextResult").GetComponent<InputField>();
field.text = result;
showWarningText("Recording");
}
}
Error code
Error Code | Description | Suggested Solution |
---|---|---|
32775 | Streaming speech-to-text conversion failed, but recording succeeded. | Call the `UploadRecordedFile` API to upload the recording file and then call the `SpeechToText` API to perform speech-to-text conversion. |
32777 | Streaming speech-to-text converting failed, but recording and upload succeeded | The message returned contains a backend URL after successful upload. Call the `SpeechToText` API to perform speech-to-text conversion. |
32786 | Streaming speech-to-text conversion failed. | During streaming recording, wait for the execution result of the streaming recording API to return. |
This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.
ITMGPTT int StopRecording()
ITMGContext.GetInstance().GetPttCtrl().StopRecording();
Was this page helpful?