61 lines
1.7 KiB
Objective-C
61 lines
1.7 KiB
Objective-C
//
|
||
// 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
|