Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
aivoice_plugin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
王苏进
aivoice_plugin
Commits
29fa1f76
提交
29fa1f76
authored
9月 11, 2024
作者:
edy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 语音合成相关
上级
a5965975
全部展开
显示空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
321 行增加
和
18 行删除
+321
-18
AivoicePlugin.kt
...c/main/kotlin/com/example/aivoice_plugin/AivoicePlugin.kt
+57
-6
Podfile.lock
example/ios/Podfile.lock
+2
-2
main.dart
example/lib/main.dart
+24
-3
AivoicePlugin.m
ios/Classes/AivoicePlugin.m
+52
-3
SensitiveDefines.h
ios/Classes/SensitiveDefines.h
+2
-2
SensitiveDefines.m
ios/Classes/SensitiveDefines.m
+2
-2
TtsNovel.h
ios/Classes/TtsNovel.h
+41
-0
TtsNovel.m
ios/Classes/TtsNovel.m
+0
-0
VoiceAsr.h
ios/Classes/VoiceAsr.h
+2
-0
VoiceAsr.m
ios/Classes/VoiceAsr.m
+4
-0
aivoice_plugin.dart
lib/aivoice_plugin.dart
+45
-0
aivoice_plugin_method_channel.dart
lib/aivoice_plugin_method_channel.dart
+45
-0
aivoice_plugin_platform_interface.dart
lib/aivoice_plugin_platform_interface.dart
+45
-0
没有找到文件。
android/src/main/kotlin/com/example/aivoice_plugin/AivoicePlugin.kt
浏览文件 @
29fa1f76
...
@@ -16,20 +16,71 @@ class AivoicePlugin: FlutterPlugin, MethodCallHandler {
...
@@ -16,20 +16,71 @@ class AivoicePlugin: FlutterPlugin, MethodCallHandler {
/// when the Flutter Engine is detached from the Activity
/// when the Flutter Engine is detached from the Activity
private
lateinit
var
channel
:
MethodChannel
private
lateinit
var
channel
:
MethodChannel
override
fun
onAttachedToEngine
(
flutterPluginBinding
:
FlutterPlugin
.
FlutterPluginBinding
)
{
override
fun
onAttachedToEngine
(
@NonNull
flutterPluginBinding
:
FlutterPlugin
.
FlutterPluginBinding
)
{
channel
=
MethodChannel
(
flutterPluginBinding
.
binaryMessenger
,
"aivoice_plugin"
)
channel
=
MethodChannel
(
flutterPluginBinding
.
binaryMessenger
,
"aivoice_plugin"
)
channel
.
setMethodCallHandler
(
this
)
channel
.
setMethodCallHandler
(
this
)
}
}
override
fun
onMethodCall
(
call
:
MethodCall
,
result
:
Result
)
{
override
fun
onMethodCall
(
@NonNull
call
:
MethodCall
,
@NonNull
result
:
Result
)
{
if
(
call
.
method
==
"getPlatformVersion"
)
{
when
(
call
.
method
)
{
result
.
success
(
"Android ${android.os.Build.VERSION.RELEASE}"
)
"initEngine"
->
{
}
else
{
// 现有的实现
}
"stopEngine"
->
{
// 现有的实现
}
"uninitEngine"
->
{
// 现有的实现
}
"startOrStopEngine"
->
{
// 现有的实现
}
"prepareEnvironment"
->
{
// 现有的实现
}
"ttsStartEngineBtnClick"
->
{
// 空实现
result
.
success
(
null
)
}
"ttsSynthesis"
->
{
// 空实现
result
.
success
(
null
)
}
"ttsStopEngineBtnClicked"
->
{
// 空实现
result
.
success
(
null
)
}
"ttsPausePlayback"
->
{
// 空实现
result
.
success
(
null
)
}
"ttsResumePlayback"
->
{
// 空实现
result
.
success
(
null
)
}
"ttsInitEngine"
->
{
// 空实现
result
.
success
(
null
)
}
"ttsUnInitEngine"
->
{
// 空实现
result
.
success
(
null
)
}
"destoryTtsNovel"
->
{
// 空实现
result
.
success
(
null
)
}
"destoryAsrVoice"
->
{
// 空实现
result
.
success
(
null
)
}
else
->
{
result
.
notImplemented
()
result
.
notImplemented
()
}
}
}
}
}
override
fun
onDetachedFromEngine
(
binding
:
FlutterPlugin
.
FlutterPluginBinding
)
{
override
fun
onDetachedFromEngine
(
@NonNull
binding
:
FlutterPlugin
.
FlutterPluginBinding
)
{
channel
.
setMethodCallHandler
(
null
)
channel
.
setMethodCallHandler
(
null
)
}
}
}
}
example/ios/Podfile.lock
浏览文件 @
29fa1f76
...
@@ -34,6 +34,6 @@ SPEC CHECKSUMS:
...
@@ -34,6 +34,6 @@ SPEC CHECKSUMS:
SpeechEngineToB: a49185c07a099cdc052de97218bc10dc4ff60152
SpeechEngineToB: a49185c07a099cdc052de97218bc10dc4ff60152
TTNetworkManager: 47d93100d944e2ae807e035d8636df92fd5cc390
TTNetworkManager: 47d93100d944e2ae807e035d8636df92fd5cc390
PODFILE CHECKSUM:
bde3e45995fad5550475b342803cb71575488751
PODFILE CHECKSUM:
0212500e480860ee905e9b132693e030f85d651b
COCOAPODS: 1.1
4.3
COCOAPODS: 1.1
5.2
example/lib/main.dart
浏览文件 @
29fa1f76
...
@@ -66,19 +66,40 @@ class _MyAppState extends State<MyApp> {
...
@@ -66,19 +66,40 @@ class _MyAppState extends State<MyApp> {
children:
[
children:
[
TextButton
(
TextButton
(
onPressed:
()
{
onPressed:
()
{
_aivoicePlugin
.
i
nitEngine
(
configMap
);
_aivoicePlugin
.
ttsI
nitEngine
(
configMap
);
},
},
child:
const
Text
(
'init'
)),
child:
const
Text
(
'init'
)),
TextButton
(
TextButton
(
onPressed:
()
{
onPressed:
()
{
_aivoicePlugin
.
startOrStopEngine
(
true
);
_aivoicePlugin
.
ttsStartEngineBtnClick
(
{
"text"
:
"引擎启动成功,收到该回调后,在单次合成场景下收到该回调时语音合成已经开始,同时数据字段为该次请求的请求 ID; 连续合成场景下还需要再发送合成指令,才真正的开始合成。"
});
},
},
child:
const
Text
(
'start'
)),
child:
const
Text
(
'start'
)),
TextButton
(
TextButton
(
onPressed:
()
{
onPressed:
()
{
_aivoicePlugin
.
stopEngine
();
_aivoicePlugin
.
ttsStopEngineBtnClicked
();
},
},
child:
const
Text
(
'stop'
)),
child:
const
Text
(
'stop'
)),
TextButton
(
onPressed:
()
{
_aivoicePlugin
.
ttsSynthesis
({});
},
child:
const
Text
(
'合成'
))
// TextButton(
// onPressed: () {
// _aivoicePlugin.initEngine(configMap);
// },
// child: const Text('init')),
// TextButton(
// onPressed: () {
// _aivoicePlugin.startOrStopEngine(true);
// },
// child: const Text('start')),
// TextButton(
// onPressed: () {
// _aivoicePlugin.stopEngine();
// },
// child: const Text('stop')),
],
],
),
),
),
),
...
...
ios/Classes/AivoicePlugin.m
浏览文件 @
29fa1f76
#import "AivoicePlugin.h"
#import "AivoicePlugin.h"
#import "VoiceAsr.h"
#import "VoiceAsr.h"
#import "TtsNovel.h"
@interface
AivoicePlugin
()
<
FlutterStreamHandler
,
VoiceAsrDelegate
>
@interface
AivoicePlugin
()
<
FlutterStreamHandler
,
VoiceAsrDelegate
,
TtsNovelDelegate
>
@property
(
nonatomic
,
strong
)
FlutterEventSink
eventSink
;
@property
(
nonatomic
,
strong
)
FlutterEventSink
eventSink
;
@property
(
nonatomic
,
strong
)
VoiceAsr
*
voiceAsr
;
@property
(
nonatomic
,
strong
)
VoiceAsr
*
voiceAsr
;
@property
(
nonatomic
,
strong
)
TtsNovel
*
ttsNovel
;
@property
(
nonatomic
,
strong
)
NSDictionary
*
config
;
@property
(
nonatomic
,
strong
)
NSDictionary
*
config
;
@property
(
nonatomic
,
strong
)
NSDictionary
*
ttsNovelconfig
;
@end
@end
@implementation
AivoicePlugin
@implementation
AivoicePlugin
...
@@ -40,14 +45,40 @@
...
@@ -40,14 +45,40 @@
[
self
.
voiceAsr
uninitEngine
];
[
self
.
voiceAsr
uninitEngine
];
result
(
nil
);
result
(
nil
);
}
else
if
([
@"startOrStopEngine"
isEqualToString
:
call
.
method
])
{
}
else
if
([
@"startOrStopEngine"
isEqualToString
:
call
.
method
])
{
// BOOL arg = [NSNumber numberWithBool:call.arguments];
[
self
.
voiceAsr
startEngineBtnClicked
];
[
self
.
voiceAsr
startEngineBtnClicked
];
result
(
nil
);
result
(
nil
);
}
else
if
([
@"prepareEnvironment"
isEqualToString
:
call
.
method
])
{
}
else
if
([
@"prepareEnvironment"
isEqualToString
:
call
.
method
])
{
[
VoiceAsr
prepareEnvironment
:
call
.
arguments
];
[
VoiceAsr
prepareEnvironment
:
call
.
arguments
];
result
(
nil
);
result
(
nil
);
}
else
if
([
@"ttsStartEngineBtnClick"
isEqualToString
:
call
.
method
])
{
[
self
.
ttsNovel
startEngineBtnClick
:
call
.
arguments
[
@"text"
]];
result
(
nil
);
}
else
if
([
@"ttsSynthesis"
isEqualToString
:
call
.
method
])
{
[
self
.
ttsNovel
synthesis
];
result
(
nil
);
}
else
if
([
@"ttsStopEngineBtnClicked"
isEqualToString
:
call
.
method
])
{
[
self
.
ttsNovel
stopEngineBtnClicked
];
result
(
nil
);
}
else
if
([
@"ttsPausePlayback"
isEqualToString
:
call
.
method
])
{
[
self
.
ttsNovel
pausePlayback
];
result
(
nil
);
}
else
if
([
@"ttsResumePlayback"
isEqualToString
:
call
.
method
])
{
[
self
.
ttsNovel
resumePlayback
];
result
(
nil
);
}
else
if
([
@"ttsInitEngine"
isEqualToString
:
call
.
method
])
{
self
.
ttsNovelconfig
=
call
.
arguments
;
[
self
.
ttsNovel
switchEngine
];
result
(
nil
);
}
else
if
([
@"ttsUnInitEngine"
isEqualToString
:
call
.
method
])
{
[
self
.
ttsNovel
switchEngine
];
result
(
nil
);
}
else
if
([
@"destoryTtsNovel"
isEqualToString
:
call
.
method
])
{
[
self
destoryTtsNovel
];
result
(
nil
);
}
else
if
([
@"destoryAsrVoice"
isEqualToString
:
call
.
method
])
{
[
self
destoryVoiceAsr
];
result
(
nil
);
}
else
{
}
else
{
result
(
FlutterMethodNotImplemented
);
result
(
FlutterMethodNotImplemented
);
}
}
...
@@ -70,12 +101,29 @@
...
@@ -70,12 +101,29 @@
}
}
}
}
-
(
void
)
destoryVoiceAsr
{
[
self
.
voiceAsr
destroyEngine
];
_voiceAsr
=
nil
;
}
-
(
void
)
destoryTtsNovel
{
[
self
.
ttsNovel
destroyEngine
];
_ttsNovel
=
nil
;
}
-
(
VoiceAsr
*
)
voiceAsr
{
-
(
VoiceAsr
*
)
voiceAsr
{
if
(
!
_voiceAsr
)
{
if
(
!
_voiceAsr
)
{
_voiceAsr
=
[[
VoiceAsr
alloc
]
initWithDelegate
:
self
config
:
self
.
config
];
_voiceAsr
=
[[
VoiceAsr
alloc
]
initWithDelegate
:
self
config
:
self
.
config
];
}
}
return
_voiceAsr
;
return
_voiceAsr
;
}
}
-
(
TtsNovel
*
)
ttsNovel
{
if
(
!
_ttsNovel
)
{
_ttsNovel
=
[[
TtsNovel
alloc
]
initWithDelegate
:
self
config
:
self
.
ttsNovelconfig
];
}
return
_ttsNovel
;
}
-
(
void
)
onRecieve
:
(
nonnull
NSDictionary
*
)
message
{
-
(
void
)
onRecieve
:
(
nonnull
NSDictionary
*
)
message
{
...
@@ -83,4 +131,5 @@
...
@@ -83,4 +131,5 @@
}
}
@end
@end
ios/Classes/SensitiveDefines.h
浏览文件 @
29fa1f76
...
@@ -46,8 +46,8 @@ extern NSString* SDEF_AU_DEFAULT_URI;
...
@@ -46,8 +46,8 @@ extern NSString* SDEF_AU_DEFAULT_URI;
extern
NSString
*
SDEF_TTS_DEFAULT_URI
;
extern
NSString
*
SDEF_TTS_DEFAULT_URI
;
extern
NSString
*
SDEF_TTS_DEFAULT_CLUSTER
;
extern
NSString
*
SDEF_TTS_DEFAULT_CLUSTER
;
extern
NSString
*
SDEF_TTS_DEFAULT_BACKEND_CLUSTER
;
extern
NSString
*
SDEF_TTS_DEFAULT_BACKEND_CLUSTER
;
//
extern NSString* SDEF_TTS_DEFAULT_ONLINE_VOICE;
extern
NSString
*
SDEF_TTS_DEFAULT_ONLINE_VOICE
;
//
extern NSString* SDEF_TTS_DEFAULT_ONLINE_VOICE_TYPE;
extern
NSString
*
SDEF_TTS_DEFAULT_ONLINE_VOICE_TYPE
;
extern
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE
;
extern
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE
;
extern
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE_TYPE
;
extern
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE_TYPE
;
extern
NSString
*
SDEF_TTS_DEFAULT_ONLINE_LANGUAGE
;
extern
NSString
*
SDEF_TTS_DEFAULT_ONLINE_LANGUAGE
;
...
...
ios/Classes/SensitiveDefines.m
浏览文件 @
29fa1f76
...
@@ -43,8 +43,8 @@ const NSString* SDEF_AU_DEFAULT_URI = @"/api/v1/sauc";
...
@@ -43,8 +43,8 @@ const NSString* SDEF_AU_DEFAULT_URI = @"/api/v1/sauc";
const
NSString
*
SDEF_TTS_DEFAULT_URI
=
@"/api/v1/tts/ws_binary"
;
const
NSString
*
SDEF_TTS_DEFAULT_URI
=
@"/api/v1/tts/ws_binary"
;
const
NSString
*
SDEF_TTS_DEFAULT_CLUSTER
=
@"volcano_tts"
;
const
NSString
*
SDEF_TTS_DEFAULT_CLUSTER
=
@"volcano_tts"
;
const
NSString
*
SDEF_TTS_DEFAULT_BACKEND_CLUSTER
=
@"YOUR TTS BACKEND CLUSTER"
;
const
NSString
*
SDEF_TTS_DEFAULT_BACKEND_CLUSTER
=
@"YOUR TTS BACKEND CLUSTER"
;
//
const NSString* SDEF_TTS_DEFAULT_ONLINE_VOICE = @"灿灿";
const
NSString
*
SDEF_TTS_DEFAULT_ONLINE_VOICE
=
@"灿灿"
;
//const NSString* SDEF_TTS_DEFAULT_ONLINE_VOICE_TYPE = @"BV213_w5H18f6VbKnhg3Ph
";
const
NSString
*
SDEF_TTS_DEFAULT_ONLINE_VOICE_TYPE
=
@"BV002_streaming
"
;
//BV002_streaming BV021_PSj8BvWAZyepfUPB BV705_streaming BV115_H74MBi790rUFu993 BV213_w5H18f6VbKnhg3Ph
//BV002_streaming BV021_PSj8BvWAZyepfUPB BV705_streaming BV115_H74MBi790rUFu993 BV213_w5H18f6VbKnhg3Ph
const
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE
=
@"YOUR TTS OFFLINE VOICE"
;
const
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE
=
@"YOUR TTS OFFLINE VOICE"
;
const
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE_TYPE
=
@"YOUR TTS OFFLINE VOICE TYPE"
;
const
NSString
*
SDEF_TTS_DEFAULT_OFFLINE_VOICE_TYPE
=
@"YOUR TTS OFFLINE VOICE TYPE"
;
...
...
ios/Classes/TtsNovel.h
0 → 100644
浏览文件 @
29fa1f76
//
// TtsNovel.h
// aivoice_plugin
//
// Created by edy on 2024/9/11.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol
TtsNovelDelegate
<
NSObject
>
-
(
void
)
onRecieve
:
(
NSDictionary
*
)
message
;
@end
@interface
TtsNovel
:
NSObject
-
(
instancetype
)
initWithDelegate
:(
id
<
TtsNovelDelegate
>
)
delegate
config
:(
NSDictionary
*
)
config
;
-
(
void
)
switchEngine
;
-
(
void
)
startEngineBtnClick
:(
NSString
*
)
text
;
-
(
void
)
stopEngineBtnClicked
;
-
(
void
)
synthesis
;
-
(
void
)
destroyEngine
;
-
(
void
)
pausePlayback
;
-
(
void
)
resumePlayback
;
@end
NS_ASSUME_NONNULL_END
ios/Classes/TtsNovel.m
0 → 100644
浏览文件 @
29fa1f76
差异被折叠。
点击展开。
ios/Classes/VoiceAsr.h
浏览文件 @
29fa1f76
...
@@ -26,6 +26,8 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -26,6 +26,8 @@ NS_ASSUME_NONNULL_BEGIN
-
(
void
)
uninitEngine
;
-
(
void
)
uninitEngine
;
-
(
void
)
destroyEngine
;
-
(
void
)
startEngineBtnClicked
;
-
(
void
)
startEngineBtnClicked
;
-
(
void
)
stopEngineBtnClicked
;
-
(
void
)
stopEngineBtnClicked
;
...
...
ios/Classes/VoiceAsr.m
浏览文件 @
29fa1f76
...
@@ -148,6 +148,10 @@
...
@@ -148,6 +148,10 @@
}
}
}
}
-
(
void
)
destroyEngine
{
[
self
.
curEngine
destroyEngine
];
}
#pragma mark - Config & Init & Uninit Methods
#pragma mark - Config & Init & Uninit Methods
-
(
void
)
configInitParams
{
-
(
void
)
configInitParams
{
...
...
lib/aivoice_plugin.dart
浏览文件 @
29fa1f76
...
@@ -36,4 +36,49 @@ class AivoicePlugin {
...
@@ -36,4 +36,49 @@ class AivoicePlugin {
Stream
<
Map
<
String
,
dynamic
>>
get
onAsrResultReceived
{
Stream
<
Map
<
String
,
dynamic
>>
get
onAsrResultReceived
{
return
_eventChannel
.
receiveBroadcastStream
().
map
((
event
)
=>
Map
<
String
,
dynamic
>.
from
(
event
));
return
_eventChannel
.
receiveBroadcastStream
().
map
((
event
)
=>
Map
<
String
,
dynamic
>.
from
(
event
));
}
}
// 更改方法名
Future
<
void
>
ttsStartEngineBtnClick
(
Map
<
String
,
dynamic
>
params
)
{
return
AivoicePluginPlatform
.
instance
.
ttsStartEngineBtnClick
(
params
);
}
// 新增的 ttsSynthesis 方法
Future
<
void
>
ttsSynthesis
(
Map
<
String
,
dynamic
>
params
)
{
return
AivoicePluginPlatform
.
instance
.
ttsSynthesis
(
params
);
}
// 修改方法名
Future
<
void
>
ttsStopEngineBtnClicked
()
{
return
AivoicePluginPlatform
.
instance
.
ttsStopEngineBtnClicked
();
}
// 新增的 ttsPausePlayback 方法
Future
<
void
>
ttsPausePlayback
()
{
return
AivoicePluginPlatform
.
instance
.
ttsPausePlayback
();
}
// 新增的 ttsResumePlayback 方法
Future
<
void
>
ttsResumePlayback
()
{
return
AivoicePluginPlatform
.
instance
.
ttsResumePlayback
();
}
// 新增的 ttsInitEngine 方法
Future
<
void
>
ttsInitEngine
(
Map
<
String
,
dynamic
>
config
)
{
return
AivoicePluginPlatform
.
instance
.
ttsInitEngine
(
config
);
}
// 新增的 ttsUnInitEngine 方法
Future
<
void
>
ttsUnInitEngine
()
{
return
AivoicePluginPlatform
.
instance
.
ttsUnInitEngine
();
}
// 新增的 destoryTtsNovel 方法
Future
<
void
>
destoryTtsNovel
()
{
return
AivoicePluginPlatform
.
instance
.
destoryTtsNovel
();
}
// 新增的 destoryAsrVoice 方法
Future
<
void
>
destoryAsrVoice
()
{
return
AivoicePluginPlatform
.
instance
.
destoryAsrVoice
();
}
}
}
lib/aivoice_plugin_method_channel.dart
浏览文件 @
29fa1f76
...
@@ -35,4 +35,49 @@ class MethodChannelAivoicePlugin extends AivoicePluginPlatform {
...
@@ -35,4 +35,49 @@ class MethodChannelAivoicePlugin extends AivoicePluginPlatform {
Future
<
void
>
prepareEnvironment
(
Map
<
String
,
dynamic
>
config
)
async
{
Future
<
void
>
prepareEnvironment
(
Map
<
String
,
dynamic
>
config
)
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'prepareEnvironment'
,
config
);
await
methodChannel
.
invokeMethod
<
void
>(
'prepareEnvironment'
,
config
);
}
}
@override
Future
<
void
>
ttsStartEngineBtnClick
(
Map
<
String
,
dynamic
>
params
)
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsStartEngineBtnClick'
,
params
);
}
@override
Future
<
void
>
ttsSynthesis
(
Map
<
String
,
dynamic
>
params
)
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsSynthesis'
,
params
);
}
@override
Future
<
void
>
ttsStopEngineBtnClicked
()
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsStopEngineBtnClicked'
);
}
@override
Future
<
void
>
ttsPausePlayback
()
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsPausePlayback'
);
}
@override
Future
<
void
>
ttsResumePlayback
()
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsResumePlayback'
);
}
@override
Future
<
void
>
ttsInitEngine
(
Map
<
String
,
dynamic
>
config
)
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsInitEngine'
,
config
);
}
@override
Future
<
void
>
ttsUnInitEngine
()
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'ttsUnInitEngine'
);
}
@override
Future
<
void
>
destoryTtsNovel
()
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'destoryTtsNovel'
);
}
@override
Future
<
void
>
destoryAsrVoice
()
async
{
await
methodChannel
.
invokeMethod
<
void
>(
'destoryAsrVoice'
);
}
}
}
lib/aivoice_plugin_platform_interface.dart
浏览文件 @
29fa1f76
...
@@ -39,4 +39,49 @@ abstract class AivoicePluginPlatform extends PlatformInterface {
...
@@ -39,4 +39,49 @@ abstract class AivoicePluginPlatform extends PlatformInterface {
// 新增的 prepareEnvironment 方法
// 新增的 prepareEnvironment 方法
Future
<
void
>
prepareEnvironment
(
Map
<
String
,
dynamic
>
config
);
Future
<
void
>
prepareEnvironment
(
Map
<
String
,
dynamic
>
config
);
// 新增的 ttsStartEngineBtnClick 方法
Future
<
void
>
ttsStartEngineBtnClick
(
Map
<
String
,
dynamic
>
params
)
{
throw
UnimplementedError
(
'ttsStartEngineBtnClick() has not been implemented.'
);
}
// 新增的 ttsSynthesis 方法
Future
<
void
>
ttsSynthesis
(
Map
<
String
,
dynamic
>
params
)
{
throw
UnimplementedError
(
'ttsSynthesis() has not been implemented.'
);
}
// 修改方法名
Future
<
void
>
ttsStopEngineBtnClicked
()
{
throw
UnimplementedError
(
'ttsStopEngineBtnClicked() has not been implemented.'
);
}
// 新增的 ttsPausePlayback 方法
Future
<
void
>
ttsPausePlayback
()
{
throw
UnimplementedError
(
'ttsPausePlayback() has not been implemented.'
);
}
// 新增的 ttsResumePlayback 方法
Future
<
void
>
ttsResumePlayback
()
{
throw
UnimplementedError
(
'ttsResumePlayback() has not been implemented.'
);
}
// 新增的 ttsInitEngine 方法
Future
<
void
>
ttsInitEngine
(
Map
<
String
,
dynamic
>
config
)
{
throw
UnimplementedError
(
'ttsInitEngine() has not been implemented.'
);
}
// 新增的 ttsUnInitEngine 方法
Future
<
void
>
ttsUnInitEngine
()
{
throw
UnimplementedError
(
'ttsUnInitEngine() has not been implemented.'
);
}
// 新增的 destoryTtsNovel 方法
Future
<
void
>
destoryTtsNovel
()
{
throw
UnimplementedError
(
'destoryTtsNovel() has not been implemented.'
);
}
// 新增的 destoryAsrVoice 方法
Future
<
void
>
destoryAsrVoice
()
{
throw
UnimplementedError
(
'destoryAsrVoice() has not been implemented.'
);
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论