添加语音websocket等,还没测试
This commit is contained in:
60
keyBoard/Class/AiTalk/VM/TTSServiceClient.h
Normal file
60
keyBoard/Class/AiTalk/VM/TTSServiceClient.h
Normal file
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// TTSServiceClient.h
|
||||
// keyBoard
|
||||
//
|
||||
// Created by Mac on 2026/1/15.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// TTS 返回数据类型
|
||||
typedef NS_ENUM(NSInteger, TTSPayloadType) {
|
||||
TTSPayloadTypeURL = 0, // 模式 A:返回 m4a/MP3 URL
|
||||
TTSPayloadTypePCMChunk, // 模式 D:返回 PCM chunk
|
||||
TTSPayloadTypeAACChunk, // 模式 B:返回 AAC chunk
|
||||
TTSPayloadTypeOpusChunk // 模式 C:返回 Opus chunk
|
||||
};
|
||||
|
||||
/// TTS 服务客户端代理
|
||||
@protocol TTSServiceClientDelegate <NSObject>
|
||||
@optional
|
||||
/// 收到音频 URL(模式 A)
|
||||
- (void)ttsClientDidReceiveURL:(NSURL *)url segmentId:(NSString *)segmentId;
|
||||
/// 收到音频数据块(模式 B/C/D)
|
||||
- (void)ttsClientDidReceiveAudioChunk:(NSData *)chunk
|
||||
payloadType:(TTSPayloadType)type
|
||||
segmentId:(NSString *)segmentId;
|
||||
/// 片段完成
|
||||
- (void)ttsClientDidFinishSegment:(NSString *)segmentId;
|
||||
/// 请求失败
|
||||
- (void)ttsClientDidFail:(NSError *)error;
|
||||
@end
|
||||
|
||||
/// TTS 服务客户端
|
||||
/// 统一网络层接口,支持多种 TTS 返回形态
|
||||
@interface TTSServiceClient : NSObject
|
||||
|
||||
@property(nonatomic, weak) id<TTSServiceClientDelegate> delegate;
|
||||
|
||||
/// TTS 服务器 URL
|
||||
@property(nonatomic, copy) NSString *serverURL;
|
||||
|
||||
/// 当前期望的返回类型(由服务端配置决定)
|
||||
@property(nonatomic, assign) TTSPayloadType expectedPayloadType;
|
||||
|
||||
/// 是否正在请求
|
||||
@property(nonatomic, assign, readonly, getter=isRequesting) BOOL requesting;
|
||||
|
||||
/// 请求 TTS 合成
|
||||
/// @param text 要合成的文本
|
||||
/// @param segmentId 片段 ID(用于标识和排序)
|
||||
- (void)requestTTSForText:(NSString *)text segmentId:(NSString *)segmentId;
|
||||
|
||||
/// 取消所有请求
|
||||
- (void)cancel;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
Reference in New Issue
Block a user