集成阿里云 NUI 语音合成 SDK

This commit is contained in:
2026-07-07 16:05:39 +08:00
parent 0aa8b14e1f
commit 9378748a4d
26 changed files with 2095 additions and 16 deletions

View File

@ -0,0 +1,131 @@
//
// NeoNuiStreamInputTts.h
// nuisdk
//
// Created by lengjiayi on 2024/4/17.
// Copyright © 2024 zhouguangdong. All rights reserved.
//
#ifndef StreamInputTts_h
#define StreamInputTts_h
#import <Foundation/Foundation.h>
#import "NeoNuiCode.h"
enum StreamInputTtsCallbackEvent {
TTS_EVENT_SYNTHESIS_STARTED = 0,
TTS_EVENT_SENTENCE_BEGIN = 1,
TTS_EVENT_SENTENCE_SYNTHESIS = 2,
TTS_EVENT_SENTENCE_END = 3,
TTS_EVENT_SYNTHESIS_COMPLETE = 4,
TTS_EVENT_TASK_FAILED = 5
};
typedef enum StreamInputTtsCallbackEvent StreamInputTtsCallbackEvent;
@protocol StreamInputTtsDelegate <NSObject>
@optional
/**
* 事件回调
* @param event 回调事件,参见如下事件列表。
* @param taskid 请求的任务ID每次调用一个新ID。
* @param sessionId 请求的会话ID。
* @param ret_code 参见错误码出现TTS_EVENT_ERROR事件时有效可查阅xxxxx。
* @param error_msg 当产生错误码时,返回错误信息。
* @param timestamp 时间戳信息。
* @param all_response 返回的完整json格式信息。
*/
- (void)onStreamInputTtsEventCallback:(StreamInputTtsCallbackEvent)event taskId:(char*)taskid
sessionId:(char*)sessionId ret_code:(int)ret_code
error_msg:(char*)error_msg timestamp:(char*)timestamp all_response:(char*)all_response;
/**
* 当合成数据时此回调被连续调用App需要在回调中获得合成的音频数据
* @param buffer 合成的语音数据
* @param len 合成的语音长度
*/
- (void)onStreamInputTtsDataCallback:(char*)buffer len:(int)len;
- (void)onStreamInputTtsLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
@end
@interface StreamInputTts : NSObject
@property (nonatomic,weak) id<StreamInputTtsDelegate> delegate;
+ (instancetype)get_instance;
/**
* 与服务端完成建链,并开始流式语音合成任务
* @param ticket json string形式的鉴权参数参见下方说明或接口说明xxxxx
* @param parameters json string形式的初始化配置参数参见下方说明或接口说明xxxxx
* @param sessionId 会话ID可传入32个字节的uuid或传入空内容由SDK自动生成。
* @param logLevel log打印级别值越小打印越多。
* @param saveLog 是否保存log为文件存储目录为ticket中的debug_path字段值。
* @return参见错误码https://help.aliyun.com/document_detail/459864.html。
*/
- (int) startStreamInputTts:(const char *)ticket parameters:(const char *)parameters
sessionId:(const char *)sessionId logLevel:(NuiSdkLogLevel)logLevel
saveLog:(BOOL)saveLog;
/**
* 与服务端完成建链,并开始单向流式语音合成(长文本语音合成)任务,同步接口
* @param ticket json string形式的鉴权参数参见下方说明或接口说明xxxxx
* @param parameters json string形式的初始化配置参数参见下方说明或接口说明xxxxx
* @param text 待合成文本
* @param sessionId 会话ID可传入32个字节的uuid或传入空内容由SDK自动生成。
* @param logLevel log打印级别值越小打印越多。
* @param saveLog 是否保存log为文件存储目录为ticket中的debug_path字段值。
* @return参见错误码https://help.aliyun.com/document_detail/459864.html。
*/
- (int) playStreamInputTts:(const char *)ticket parameters:(const char *)parameters
text:(const char*)text sessionId:(const char *)sessionId
logLevel:(NuiSdkLogLevel)logLevel saveLog:(BOOL)saveLog;
/**
* 与服务端完成建链,并开始单向流式语音合成(长文本语音合成)任务,异步接口
* @param ticket json string形式的鉴权参数参见下方说明或接口说明xxxxx
* @param parameters json string形式的初始化配置参数参见下方说明或接口说明xxxxx
* @param text 待合成文本
* @param sessionId 会话ID可传入32个字节的uuid或传入空内容由SDK自动生成。
* @param logLevel log打印级别值越小打印越多。
* @param saveLog 是否保存log为文件存储目录为ticket中的debug_path字段值。
* @return参见错误码https://help.aliyun.com/document_detail/459864.html。
*/
- (int) asyncPlayStreamInputTts:(const char *)ticket parameters:(const char *)parameters
text:(const char*)text sessionId:(const char *)sessionId
logLevel:(NuiSdkLogLevel)logLevel saveLog:(BOOL)saveLog;
/**
* 以流式的方式发送文本
* @param text 从大模型当中生成的流式文本
* @return参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) sendStreamInputTts:(const char *)text;
/**
* 结束合成任务通知服务端流入文本数据发送完毕阻塞等待服务端处理完成并返回所有合成音频。阻塞超时可以通过start接口中的complete_waiting_ms设置
* @return参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) stopStreamInputTts;
/**
* 结束合成任务,通知服务端流入文本数据发送完毕,不等待而是立即返回,同时回调继续返回剩余内容
* @return参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) asyncStopStreamInputTts;
/**
* 立即停止合成任务,不会有任何回调返回
* @return参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) cancelStreamInputTts;
/**
* 手动释放合成任务
*/
- (int) releaseStreamInputTts;
@end
#endif /* NeoNuiStreamInputTts_h */