//申请用户语音识别权限
[SFSpeechRecognizer requestAuthorization:^(SFSpeechRecognizerAuthorizationStatus status) {
}];
typedef NS_ENUM(NSInteger, SFSpeechRecognizerAuthorizationStatus) {
//结果未知 用户尚未进行选择
SFSpeechRecognizerAuthorizationStatusNotDetermined,
//用户拒绝授权语音识别
SFSpeechRecognizerAuthorizationStatusDenied,
//设备不支持语音识别功能
SFSpeechRecognizerAuthorizationStatusRestricted,
//用户授权语音识别
SFSpeechRecognizerAuthorizationStatusAuthorized,
};
//创建语音识别操作类对象
SFSpeechRecognizer * rec = [[SFSpeechRecognizer alloc]init];
//通过一个音频路径创建音频识别请求
SFSpeechRecognitionRequest * request = [[SFSpeechURLRecognitionRequest alloc]initWithURL:[[NSBundle mainBundle] URLForResource:@"7011" withExtension:@"m4a"]];
//进行请求
[rec recognitionTaskWithRequest:request resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error) {
//打印语音识别的结果字符串
NSLog(@"%@",result.bestTranscription.formattedString);
}];
//获取当前用户权限状态
+ (SFSpeechRecognizerAuthorizationStatus)authorizationStatus;
//申请语音识别用户权限
+ (void)requestAuthorization:(void(^)(SFSpeechRecognizerAuthorizationStatus status))handler;
//获取所支持的所有语言环境
+ (NSSet<NSLocale *> *)supportedLocales;
//初始化方法 需要注意 这个初始化方法将默认以设备当前的语言环境作为语音识别的语言环境
- (nullable instancetype)init;
//初始化方法 设置一个特定的语言环境
- (nullable instancetype)initWithLocale:(NSLocale *)locale NS_DESIGNATED_INITIALIZER;
//语音识别是否可用
@property (nonatomic, readonly, getter=isAvailable) BOOL available;
//语音识别操作类协议代理
@property (nonatomic, weak) id<SFSpeechRecognizerDelegate> delegate;
//设置语音识别的配置参数 需要注意 在每个语音识别请求中也有这样一个属性 这里设置将作为默认值
//如果SFSpeechRecognitionRequest对象中也进行了设置 则会覆盖这里的值
/*
typedef NS_ENUM(NSInteger, SFSpeechRecognitionTaskHint) {
SFSpeechRecognitionTaskHintUnspecified = 0, // 无定义
SFSpeechRecognitionTaskHintDictation = 1, // 正常的听写风格
SFSpeechRecognitionTaskHintSearch = 2, // 搜索风格
SFSpeechRecognitionTaskHintConfirmation = 3, // 短语风格
};
*/
@property (nonatomic) SFSpeechRecognitionTaskHint defaultTaskHint;
//使用回调Block的方式进行语音识别请求 请求结果会在Block中传入
- (SFSpeechRecognitionTask *)recognitionTaskWithRequest:(SFSpeechRecognitionRequest *)request
resultHandler:(void (^)(SFSpeechRecognitionResult * __nullable result, NSError * __nullable error))resultHandler;
//使用代理回调的方式进行语音识别请求
- (SFSpeechRecognitionTask *)recognitionTaskWithRequest:(SFSpeechRecognitionRequest *)request
delegate:(id <SFSpeechRecognitionTaskDelegate>)delegate;
//设置请求所占用的任务队列
@property (nonatomic, strong) NSOperationQueue *queue;
//当语音识别操作可用性发生改变时会被调用 - (void)speechRecognizer:(SFSpeechRecognizer *)speechRecognizer availabilityDidChange:(BOOL)available;
//当开始检测音频源中的语音时首先调用此方法 - (void)speechRecognitionDidDetectSpeech:(SFSpeechRecognitionTask *)task; //当识别出一条可用的信息后 会调用 /* 需要注意,apple的语音识别服务会根据提供的音频源识别出多个可能的结果 每有一条结果可用 都会调用此方法 */ - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didHypothesizeTranscription:(SFTranscription *)transcription; //当识别完成所有可用的结果后调用 - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishRecognition:(SFSpeechRecognitionResult *)recognitionResult; //当不再接受音频输入时调用 即开始处理语音识别任务时调用 - (void)speechRecognitionTaskFinishedReadingAudio:(SFSpeechRecognitionTask *)task; //当语音识别任务被取消时调用 - (void)speechRecognitionTaskWasCancelled:(SFSpeechRecognitionTask *)task; //语音识别任务完成时被调用 - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishSuccessfully:(BOOL)successfully;
//此任务的当前状态
/*
typedef NS_ENUM(NSInteger, SFSpeechRecognitionTaskState) {
SFSpeechRecognitionTaskStateStarting = 0, // 任务开始
SFSpeechRecognitionTaskStateRunning = 1, // 任务正在运行
SFSpeechRecognitionTaskStateFinishing = 2, // 不在进行音频读入 即将返回识别结果
SFSpeechRecognitionTaskStateCanceling = 3, // 任务取消
SFSpeechRecognitionTaskStateCompleted = 4, // 所有结果返回完成
};
*/
@property (nonatomic, readonly) SFSpeechRecognitionTaskState state;
//音频输入是否完成
@property (nonatomic, readonly, getter=isFinishing) BOOL finishing;
//手动完成音频输入 不再接收音频
- (void)finish;
//任务是否被取消
@property (nonatomic, readonly, getter=isCancelled) BOOL cancelled;
//手动取消任务
- (void)cancel;
@interface SFSpeechAudioBufferRecognitionRequest : SFSpeechRecognitionRequest @property (nonatomic, readonly) AVAudioFormat *nativeAudioFormat; //拼接音频流 - (void)appendAudioPCMBuffer:(AVAudioPCMBuffer *)audioPCMBuffer; - (void)appendAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer; //完成输入 - (void)endAudio; @end
//识别到的多套语音转换信息数组 其会按照准确度进行排序 @property (nonatomic, readonly, copy) NSArray<SFTranscription *> *transcriptions; //准确性最高的识别实例 @property (nonatomic, readonly, copy) SFTranscription *bestTranscription; //是否已经完成 如果YES 则所有所有识别信息都已经获取完成 @property (nonatomic, readonly, getter=isFinal) BOOL final;
//完整的语音识别准换后的文本信息字符串 @property (nonatomic, readonly, copy) NSString *formattedString; //语音识别节点数组 @property (nonatomic, readonly, copy) NSArray<SFTranscriptionSegment *> *segments;
//当前节点识别后的文本信息 @property (nonatomic, readonly, copy) NSString *substring; //当前节点识别后的文本信息在整体识别语句中的位置 @property (nonatomic, readonly) NSRange substringRange; //当前节点的音频时间戳 @property (nonatomic, readonly) NSTimeInterval timestamp; //当前节点音频的持续时间 @property (nonatomic, readonly) NSTimeInterval duration; //可信度/准确度 0-1之间 @property (nonatomic, readonly) float confidence; //关于此节点的其他可能的识别结果 @property (nonatomic, readonly) NSArray<NSString *> *alternativeSubstrings;
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有