speech_to_text_alibaba.dart
3.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import 'speech_to_text_alibaba_method_channel.dart';
import 'speech_to_text_alibaba_platform_interface.dart';
class SpeechToTextAlibaba {
/// 获取平台实现实例
static SpeechToTextAlibabaPlatform get _platform =>
SpeechToTextAlibabaPlatform.instance;
/// 设置引擎回调函数
///
/// [onCallBegin] 通话开始回调
/// [onCallEnd] 通话结束回调
/// [onError] 错误回调,参数为错误信息
/// [onUserSpeaking] 用户说话状态回调,true 表示正在说话
/// [onNetworkQuality] 网络质量回调,参数为质量等级(0-6)
/// [onVideoSizeChanged] 视频尺寸变化回调,包含宽高信息
/// [onVoiceIdChanged] 声音 ID 变化回调
/// [onRoleChanged] 角色变化回调
/// [onAIAgentStateChanged] AI 代理状态变化回调
/// [onUserAsrSubtitleNotify] 用户语音识别字幕通知回调
/// [onAIAgentSubtitleNotify] AI 代理字幕通知回调
/// [onVolumeChanged] 音量变化回调
static void setEngineEventHandler({
void Function()? onCallBegin,
void Function()? onCallEnd,
void Function(String)? onError,
void Function(bool)? onPermission,
void Function(bool)? onStopping,
void Function(double)? onNuiAudioRMSChanged,
void Function(String)? onEventAsrStarted,
void Function(String)? onEventAsrResult,
void Function(String)? onEventAsrPartitalResult,
void Function(Map<String, dynamic>)? onVolumeChanged,
}) {
if (_platform is MethodChannelSpeechToTextAlibaba) {
(_platform as MethodChannelSpeechToTextAlibaba).setEngineCallback(
onCallBegin: onCallBegin,
onCallEnd: onCallEnd,
onError: onError,
onPermission: onPermission,
onStopping: onStopping,
onNuiAudioRMSChanged: onNuiAudioRMSChanged,
onEventAsrStarted: onEventAsrStarted,
onEventAsrResult: onEventAsrResult,
onEventAsrPartitalResult: onEventAsrPartitalResult,
onVolumeChanged: onVolumeChanged,
);
}
}
/// 初始化引擎
/// [userId] 用户ID
static Future<void> initialize(
{required String appKey, required String token}) {
return _platform.initialize(appKey: appKey, token: token);
}
/// 发起通话
/// [rtcToken] RTC通话令牌
/// [aiAgentInstanceId] AI代理实例ID
/// [aiAgentUserId] AI代理用户ID
/// [channelId] 通话频道ID
static Future<void> call({
required String rtcToken,
required String aiAgentInstanceId,
required String aiAgentUserId,
required String channelId,
}) {
return _platform.call(
rtcToken: rtcToken,
aiAgentInstanceId: aiAgentInstanceId,
aiAgentUserId: aiAgentUserId,
channelId: channelId,
);
}
/// 开始一句话识别
static Future<void> startDialog() => _platform.startDialog();
/// 结束识别
static Future<void> stopDialog() => _platform.stopDialog();
/// 页面dispose的时候释放
static Future<void> release() => _platform.release();
/// 切换麦克风状态
/// [on] true开启,false关闭
static Future<void> switchMicrophone(bool on) =>
_platform.switchMicrophone(on);
/// 切换扬声器状态
/// [enable] true开启,false关闭
static Future<void> enableSpeaker(bool enable) =>
_platform.enableSpeaker(enable);
/// 打断AI说话
static Future<void> interruptSpeaking() => _platform.interruptSpeaking();
/// 启用/禁用语音打断功能
/// [enable] true启用,false禁用
static Future<void> enableVoiceInterrupt(bool enable) =>
_platform.enableVoiceInterrupt(enable);
/// 切换AI机器人声音
/// [voiceId] 声音ID
static Future<void> switchRobotVoice(String voiceId) =>
_platform.switchRobotVoice(voiceId);
/// 设置AI角色
/// [roleId] 角色ID
/// [roleName] 角色名称
static Future<void> setAIRole(String roleId, String roleName) =>
_platform.setAIRole(roleId, roleName);
}