Android&iOS&Windows&Mac

最近更新时间:2025-02-20 10:35:23

我的收藏

功能描述

语音转文字功能支持识别您所发送或接收成功的语音消息,将其转换成文字。
说明:
语音转文字是增值付费功能,已结束内测。具体费用请参见文档: 增值服务计费说明。申请开通可参见 概述及开通指引
为了方便用户测试功能,当您的账号在控制台首次单击免费试用时,会赠送2500条消息量,抵扣范围为此账号下首次试用语音转文字的应用用量。
试用期间免费用量用尽后,超量部分将按照套餐包外超量费用规则收取费用,免费用量有效期为一个月,到期自动失效。
若您测试多次申请语音转文字测试,或者测试时间超过一个月,超量部分都将按照套餐包外超量费用规则收取费用。
该功能仅增强版 7.4 及以上版本支持。

效果展示

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







接口说明

语音转文字

您可以调用 convertVoiceToText (Java / Swift / Objective-C / C++) 接口将语音转换成文本。
接口参数说明如下:
入参
含义
说明
language
识别的目标语言
如果您的主流用户使用中、英文居多,language 参数可传空字符串,此时我们默认使用中英模型识别。
如果您想指定识别的目标语言,可以将其设置成指定值。目前支持的语言请参见 语言支持
callback
识别结果回调
其中的 result 为识别的文本。
注意:
识别的语音消息时长不可以超过 60s(60.00001s 也不行),否则会识别失败。
识别的语音消息音频需要设置为 16k 采样率,否则可能识别失败。
示例代码如下:
Java
Swift
Objective-C
C++
// 获取到语音消息的 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 对象
let msg = messageList[0]

// 检查消息类型是否为语音
if msg.elemType == .V2TIM_ELEM_TYPE_SOUND {
// 从 V2TIMMessage 中获取到 soundElem
let soundElem = msg.soundElem
// 调用语音转文字,默认使用中英文识别模型
soundElem.convertVoiceToText("") { code, desc, result in
// 识别成功,result 为识别结果
print("convertVoiceToText, code: \\(code), desc: \\(desc ?? ""), result: \\(result ?? "")")
}
}
// 获取到语音消息的 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("", callback);
}

语言支持

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