Android&iOS&Windows&Mac

功能描述

语音转文字功能支持识别您所发送或接收成功的语音消息,将其转换成文字。
说明:
语音转文字是增值付费功能,处于内测阶段,您可通过 Telegram 技术交流群组 联系我们为您开通体验完整功能。
该功能仅增强版 SDK 7.4 及以上版本支持。

效果展示

您可以使用本功能,实现如下图所示的转文字效果:




接口说明

语音转文字

您可以调用 convertVoiceToText (Android / iOS & Mac / Windows) 接口将语音转换成文本。
接口参数说明如下:
入参
含义
说明
language
识别的目标语言
1. 如果您的主流用户使用中、英文居多,language 参数可传空字符串,此时我们默认使用中英模型识别。
2. 如果您想指定识别的目标语言,可以将其设置成指定值。目前支持的语言请参考 语言支持
callback
识别结果回调
其中的 result 为识别的文本。
警告:
识别的语音消息音频需要设置为 16k 采样率,否则可能识别失败。
示例代码如下:
Android
iOS & Mac
Windows
// 获取到语音消息的 V2TIMMessage 对象
V2TIMMessage msg = messageList.get(0);
if (msg.elemType == V2TIM_ELEM_TYPE_SOUND) {
// 从 V2TIMMessage 中获取到 soundElem
V2TIMSoundElem soundElem = msg.getSoundElem();
// 调用语音转文字,默认使用中英文识别模型
soundElem.convertVoiceToText("",new V2TIMValueCallback<String>() {
@Override
public void onError(int code, String desc) {
TUIChatUtils.callbackOnError(callBack, TAG, code, desc);
String str = "convertVoiceToText failed, code: " + code + " desc: " + desc;
ToastUtil.show(str,true, 1);
}
@Override
public void onSuccess(String result) {
// 识别成功,result 为识别结果
String str = "convertVoiceToText succeed, result: " + result;
ToastUtil.show(str, true, 1);
}
});
}
// 获取到语音消息的 V2TIMMessage 对象
V2TIMMessage *msg = messageList[0];
if (msg.elemType == V2TIM_ELEM_TYPE_SOUND) {
// 从 V2TIMMessage 中获取到 soundElem
V2TIMSoundElem *soundElem = msg.soundElem;
// 调用语音转文字,默认使用中英文识别模型
[soundElem convertVoiceToText:@"" completion:^(int code, NSString *desc, NSString *result) {
// 识别成功,result 为识别结果
NSLog(@"convertVoiceToText, code: %d, desc: %@, result: %@", code, desc, result);
}];
}
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

auto callback = new ValueCallback<V2TIMString>{};
callback->SetCallback(
[=](const V2TIMString& result) {
// 语音转文字成功,result 为转换结果
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 语音转文字失败
delete callback;
});

// 获取到语音消息的 V2TIMMessage 对象
V2TIMMessage *msg = messageList[0];
// 从 V2TIMMessage 中获取到 soundElem
V2TIMElem *elem = message.elemList[0];
if (elem->elemType == V2TIM_ELEM_TYPE_SOUND) {
V2TIMSoundElem *sound_elem = (V2TIMSoundElem *)elem;
// 调用语音转文字,默认使用中英文识别模型
sound_elem->ConvertVoiceToText("", &convertVoiceToTextCallback);
}

语言支持

目前支持识别的目标语言如下:
支持的语言
入参设置
中文普通话
"zh (cmn-Hans-CN)"
中文粤语
"yue-Hant-HK"
English
"en-US"
日本語(日本)
"ja-JP"