IOS中实现语音识别

通过谷歌语音接口的实现语音识别


最近在项目中有需要实现语音识别的功能。折腾了几天才搞好。刚开始做的时候没点头绪 ,网上找的资料都是乱七八糟的,要不就是非常古老的实现方法,一些简单的代码片段。所以我决定把我的经验分享给大家。


要在IOS中实现语音识别流程如下:

录音->pcm格式->转换wav->转换flac->向谷歌发送请求->等待返回的json数据->解析数据;


首先如果你要使用谷歌的接口实现语音识别必须知道下面着几点:

1.如何发送POST请求。(可以使用开源库ASIHttpRequest,AFNetWorking,这些库都封装了网络请求,使用起来非常简单);


 2.了解音频格式pcm,wav,flac,(着三个音频格式的关系是,因为谷歌接口只接受flac音频格式,其他格式无法识别,IOS中无法录制flac音频格式,也无法录制wav,只能录制pcm,所以要一步一步转换);


3.了解AVAudioRecorder类如何使用,怎么配置.

在IOS中录音就要使用AVAudioRecorder这个类,这个类的实例方法如下:

- (id)initWithURL:(NSURL *)url settings:(NSDictionary *)settings error:(NSError **)outError;
url:录音完成后声音存放的位置,

          settings:设置录制声音的参数,只有一个关键的key跟大家讲下AVFormatIDKey,这个key决定你录制出来声音的格式,我们要录成lpcm格式,未压缩的原音数据,以便我们转换,所以使用kAudioFormatLinearPCM值.其他key可以在帮助文档看,

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
1. 引入SDK 在podfile文件添加以下代码: ``` pod 'QCloudAiSDK' ``` 执行pod install命令,导入SDK。如果有问题可以尝试更新pod库: ``` pod repo update ``` 2. 获取API密钥 在腾讯云官网控制台开通语音识别服务,并获取API密钥。 3. 引入头文件 在需要使用语音识别功能的文件引入头文件: ```objective-c #import <QCloudCore/QCloudCore.h> #import <QCloudAiPlatformSDK/QCloudAiPlatformSDK.h> ``` 4. 配置SDK参数 创建一个QCloudAuthentationV2对象,并传入API密钥: ```objective-c QCloudCredential* credential = [QCloudCredential new]; credential.secretID = @"您的API密钥ID"; credential.secretKey = @"您的API密钥Key"; credential.expirationDate = [NSDate dateWithTimeIntervalSinceNow:3600*24*30]; QCloudServiceConfiguration* configuration = [QCloudServiceConfiguration new]; configuration.appID = @"您的APPID"; configuration.regionName = @"ap-guangzhou"; configuration.credential = credential; ``` 修改appID和regionName为对应的信息。 5. 调用语音识别API 创建一个QCloudGetRecognitionResultRequest对象,并传入需要识别的音频文件路径和语音识别接口的配置: ```objective-c QCloudGetRecognitionResultRequest* recognitionRequest = [QCloudGetRecognitionResultRequest new]; recognitionRequest.filePath = @"音频文件路径"; recognitionRequest.engineModelType = QCloudASREngineModelType16k_qc; recognitionRequest.voiceFormat = QCloudASRVoiceFormat_MP3; recognitionRequest.hotwordId = @"0"; recognitionRequest.enableFlush = YES; recognitionRequest.enableVad = YES; recognitionRequest.workMode = QCloudASRWorkModeRecognition; recognitionRequest.filterDirty = NO; recognitionRequest.filterModal = NO; recognitionRequest.filterPunc = NO; recognitionRequest.convertNumMode = QCloudASRConvertNumModeWord; recognitionRequest.queryType = QCloudASRQueryTypeJSON; recognitionRequest.channelNum = 1; recognitionRequest.resType = QCloudASRResType16k; recognitionRequest.source = @"sdk"; [[QCloudAiPlatformOCRService sharedInstance] GetRecognitionResult:recognitionRequest appid:@"您的APPID" region:@"ap-guangzhou" configuration:configuration withCompletionHandler:^(id outputObject, NSError *error) { NSLog(@"output: %@, error: %@", outputObject, error); }]; ``` 注释有每个参数的说明,根据需要调整。 6. 完整代码 ```objective-c #import "ViewController.h" #import <QCloudCore/QCloudCore.h> #import <QCloudAiPlatformSDK/QCloudAiPlatformSDK.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self requestSpeechRecognition]; } - (void)requestSpeechRecognition { QCloudCredential* credential = [QCloudCredential new]; credential.secretID = @"您的API密钥ID"; credential.secretKey = @"您的API密钥Key"; credential.expirationDate = [NSDate dateWithTimeIntervalSinceNow:3600*24*30]; QCloudServiceConfiguration* configuration = [QCloudServiceConfiguration new]; configuration.appID = @"您的APPID"; configuration.regionName = @"ap-guangzhou"; configuration.credential = credential; QCloudGetRecognitionResultRequest* recognitionRequest = [QCloudGetRecognitionResultRequest new]; recognitionRequest.filePath = @"音频文件路径"; recognitionRequest.engineModelType = QCloudASREngineModelType16k_qc; recognitionRequest.voiceFormat = QCloudASRVoiceFormat_MP3; recognitionRequest.hotwordId = @"0"; recognitionRequest.enableFlush = YES; recognitionRequest.enableVad = YES; recognitionRequest.workMode = QCloudASRWorkModeRecognition; recognitionRequest.filterDirty = NO; recognitionRequest.filterModal = NO; recognitionRequest.filterPunc = NO; recognitionRequest.convertNumMode = QCloudASRConvertNumModeWord; recognitionRequest.queryType = QCloudASRQueryTypeJSON; recognitionRequest.channelNum = 1; recognitionRequest.resType = QCloudASRResType16k; recognitionRequest.source = @"sdk"; [[QCloudAiPlatformOCRService sharedInstance] GetRecognitionResult:recognitionRequest appid:@"您的APPID" region:@"ap-guangzhou" configuration:configuration withCompletionHandler:^(id outputObject, NSError *error) { NSLog(@"output: %@, error: %@", outputObject, error); }]; } @end ``` 在上述代码,获取API密钥的部分需要替换成您的实际信息,其他部分根据需要调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值