美文网首页iOS学习笔记
IOS10 语音转文字

IOS10 语音转文字

作者: 0诛仙0 | 来源:发表于2016-11-24 11:27 被阅读142次

IOS10新出的speech(演讲,讲话)框架,可以方便的将语音转化为文字 。

在使用之前,首先介绍几个需要用的类 ,使用方法类似webView

SFSpeechRecognizer (Speech:演讲  Recognizer:识别)

SFSpeechRecognitionRequest (识别请求)

SFTranscription (Transcription:译文)

SFTranscriptionSegment (Segment :段)

先创建一个SFSpeechRecognizer     类似创建一个webView

然后传入求个识别请求                      类似webView的网络请求

然后设置代理,监听返回结果。

在使用之前语音之前 先在info.plist里面添加这个key,否则会崩溃

<key>NSSpeechRecognitionUsageDescription</key>

<string>测试语音  </string>

这个是使用录音功能添加的  语音不需要

<key>NSMicrophoneUsageDescription</key>

<string>测试录音 </string>

- (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishRecognition:(SFSpeechRecognitionResult *)recognitionResult{}

这个代理方法里面返回recognitionResult :

recognitionResult的两个属性

@property (nonatomic, readonly, copy) SFTranscription *bestTranscription;

// Hypotheses for possible transcriptions, sorted in decending order of confidence (more likely first)

@property (nonatomic, readonly, copy) NSArray*transcriptions;

bestTranscription : 返回了最可能的一条表达译文数据

transcriptions:所有的可能的识别数据

SFTranscription的一个属性

@property(nonatomic,readonly,copy)NSArray<SFTranscriptionSegment>*segments;

你所说的一句话,可能是有好几个词语拼成的,transcription就是你所说的那句话,segments就是你所说的你那句话的组成每个单词的集合。SFTranscriptionSegment包含该每个单词信息,比如说这个单词所用的时间。

录音:(好像文章结构有点乱)

录音使用 AVAudioRecorder

录音后的文件 这里保存在了 这个路径里面

NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

return [documentPath stringByAppendingPathComponent:@"test.aac"];

关于录音里面的一些参数的设置,demo里面给了较多的注释和讲解。

这里面的录音,每次新录的会覆盖原来的录音

录音完成后转化为文字:

- (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishRecognition:(SFSpeechRecognitionResult *)recognitionResult 

录音转化完成会调用这个方法。

NSLog(@"完成录音转换  %@",recognitionResult.bestTranscription);

取这个recognitionResult.bestTranscription 就是转化完成的语句。不过这个转化完成的语句有个缺点就是它只是一长句话,中间没有什么标点符号。并不像微信里面的那么智能。

对转化后的文字的处理:

这个我也没有什么好的办法。百度上找了好多,介绍的文章也就是到此为止。

这里笔者就是把转化后的每句话做了判断:

如果一句话中的某个片段,时间大于0.6秒 后面就需要拼接标点

根据这个片段的最后一个字,拼接相应的标点

if (speechString.length == 0) return @"";

NSString *lastString = [speechString substringFromIndex:speechString.length  - 1];

if ([lastString isEqualToString:@"啊"]) {

return @"!";

}else if ([lastString isEqualToString:@"吧"])

{

return @"~";

}else if ([lastString isEqualToString:@"呢"]){

return @"?";

}else if ([lastString isEqualToString:@"哈"]) {

return @"~~";

}else {

return @",";

}

最后希望有大神能对文章以及后面的这个标点符号的处理多多指正 ~~~~非常感激

demo:地址

相关文章

  • IOS10 语音转文字

    IOS10新出的speech(演讲,讲话)框架,可以方便的将语音转化为文字 。 在使用之前,首先介绍几个需要用的类...

  • ios10 语音转文字

    2016年的WWDC大会上,苹果公司公布了一下新的框架 语音转文字。Speech framework,然后就自己感...

  • 免费在线文字转语音播音系统

    抖兔文字转语音助手—软件简介。 文字转语音助手官网,文转语音合成软件,文字转mp3软件,发音接近真人,在线免费试用...

  • 语音转文字如何转?语音转文字软件推荐

    近期一直在帮助朋友整理语音文件,麻烦的是还是将语音内容一点一点的转换成语音内容,整理没有多少的时候,就没有耐心在继...

  • iOS 技术文章归纳

    iOS 10中如何搭建一个语音转文字框架(Speech) iOS国际化教程 iOS10适配:被弃用的openURL...

  • Window文字转语音,转wav

    老旧玩意,突然要用,写个小工具整理成wav .net framework 引用COMMicrosoft Speec...

  • a2 语音翻译文字

    大家好 我们来看一下语音翻译 也可以说语音翻译文字 视频翻译文字 我们来看一下 打开极简字幕 然后 我们点击语音转...

  • 挖到宝啦,好多人要的软件,免费搞来了!

    大家好,我是小阿浩~ 这几天好多人问我有没有 语音转文字工具 今天给大家分享 一款语音转文字软件 一个多功能语音转...

  • iOS实现支付宝收款播报---优化

    上一篇文章我们介绍了如何在iOS10上实现推送信息的语音播报。虽然在iOS10及以上能够实现,但是在iOS10以下...

  • 语音文件转成文字怎么转

    语音文件转成文字怎么转,对于语音文件而言,有时候会出现一些声音,在某一些场合,语音文件是一种很不适宜的文件,在这个...

网友评论

    本文标题:IOS10 语音转文字

    本文链接:https://www.haomeiwen.com/subject/bqfvpttx.html