ios语音功能开发,ios的语音控制
ios 开发 讯飞语音听写集成,怎样解决没有语音主动停止识别的问题
下载和安装,现在我们使用的最新版本是ibm viavoice9.1简体中文版,很多网站都有下载,大家可以用百度搜索,下载来的文件格式一般为iso镜像,所以要用虚拟光驱安装。软件的安装没有什么特别之处,一路下一步就行了,当然也可以在安装向导里修改安装信息,要注意的是一定要关闭杀毒软件,由于软件在安装过程中需要重起电脑,重起后还要继续安装,所以最好将杀毒软件的自动运行也暂时关闭。语音训练:这是使用viavoice最关键的一步,对于盲人来说也是难度最大的环节,如果顺利过了这一关,我们的工作也就完成了七八成了,剩下的软件操作其实并不复杂。程序安装完成后,程序自动开始运行,首先会出现一段语音提示,紧接着探出用户向导。要求输入用户名和选择音频设备,采用默认即可,如果有两块声卡就要选择其中之一。点下一步,探出音频设置向导,点击测试按钮,出现一段回放音乐,系统音量测试成功,下一步进入麦克风设置。选择头戴式麦克风,下一步,在音频输出设备的列表里仍然要选择头戴式麦克风。下一步,要求连接好麦克风,不用管它,继续下一步。开始测试麦克风,点测试即开始测试环境噪音,完成后在点下一步。这一部系统询问你是否有信号适配器,一定要选是,继续下一步。这时系统要调整麦克风音量。在测试过程中环境要保持安静,关闭音箱,带好耳麦,让读屏的声音从耳麦里发出,并且要将读屏的语速调到最慢,因为下面要跟随读屏朗读系统给出的语句。点击开始,读出系统给出的语句即可,这段文字可以用四六件切换来找到,其内容如下:"这里有一小段文章,您必须用正常、轻松的语调将其读出。请在段落与语句之间自然停顿。计算机将利用这一过程调整其音量。当这一过程完成以后,您会听到一小段结束提示音,系统将显示声音的品质。在听到这一小段提示音之前,您必须不断地重复这段文章。"这时可以用小键盘的加减号及点号[暂停]来控制跟读的速度及停顿。待出现声音提示在点下一步。现在就要开始创建个人语音模型了。这一步至关重要,会直接影响将来语音识别的效果。在点下一步语音模型的创建就真正开始了。系统要求你读出下面的文字,四六键切换到六可编辑文字处,tab键切换到开始按钮,点击及开始,用加减号配合点号跟随读屏朗读。如果系统跟不上你的朗读速度,便发出声音提示,此时就点击暂停,在点继续重复朗读。读完后系统提示正在处理请稍候。系统会进行语音训练,训练完毕后,最简单的语音模型就建立完毕了,当然可以想像得到,这样轻松建立起来的模型效果并不是很好。稍等片刻在点下一步。这一部是分析你的语音,以便让系统了解你的说话方式。选择开始录音单选按钮,继续下一步。在列表里选择一篇文章,四六键切换到十二可编辑文字处,tab键切换到开始按钮,点击开始,还是用加减号配合点号跟读,如果我们的说话没有被系统识别出来,屏幕上的文字就不会往下滚动,并发出声音提示。这时可以按加减号重复朗读,直到出现新的文字,才可以继续往下朗读。为了提高识别率,建议将列表中的四篇文章全部读完。读完文章以后点下一步。系统提示正在处理请稍候,等几分钟后点完成。到此,个人用户(语音模型)建立完毕,我们可以正式开始使用语音输入了。语音输入:语音训练及语音模型的建立虽然比较繁琐,但是软件的使用却非常简单。其功能只有声控命令和语音听写。在程序组中启动ibm viavoice语音中心,程序运行后在通知区域工具栏里出现viavoice的图标。我们首先要设置麦克风开关状态的热键,在停止语音输入时要立刻官麦,否则会出现大量的乱码、或发出错误命令导致不必要的麻烦。右键单击通知区域里的viavoice图标,在探出菜单里选用户选项,右光标,点viavoice选项。在探出的对话框中选启动选项卡,选中麦克风状态和发现问题时启动识别向导程序复选矿,要不老有识别向导跳出来捣乱。在21热键域无处加入快捷键。如果创建了几个用户,就要在用户选项卡里选择你自己创建的用户,否则识别效果会很差。其它选项涉及到高级设置,采用默认设置即可,带操作熟练后可在作改动。点确定关闭对话框。此时按下刚才设置的快捷键打开麦克风,[当然在菜单里也有这个命令],就进入了语音输入状态了。第一次使用会有语音提示。此时你就可以向计算机下达任何语音命令,让它为你做你想做的任何事情。想要了解当前有什么命令可用,只要说出当前命令及,就会调出当前可用命令。要了解当前帮助,就说学习内容,就会调出当前帮助。要想启动某个程序就说出启动某程序,例如想要启动大智慧,就说启动大智慧,大智慧就随即启动了。又如在ie里面,只要说出某个链接的名称即可进入该页面,说出任何菜单和按钮名称即可执行相应的命令,你说出收藏夹,收藏夹就立刻打开了,在说出收藏夹中网站的名称,就会打开该网站。viavoice支持几乎所有的已安装的或将要安装的应用程序的声控操作和直接听写。只要应用程序有文本编辑框就可以进行语音听写,但要先说直接听写,进入文字听写模式,结束听写后要说停止直接听写,回到命令输入模式。如在qq的聊天界面上,激活文本输入框,说出要输入的内容,即可在编辑框中自动写出相应的文字。不过初期使用识别的准确率不可能达到很高,需要进行一些手工修改,但是它有自学习功能,随着使用的增多,识别的准确率会越来越高。在进行听写时,请您使用连续语音,并注意同时口述标点符号和编排命令,比如句号,逗号和另起一段。尽量使用正常的节奏讲话,不要太快,也不要太慢。尽量不要吞音或者滑音,也不要故意拉长或者略读某些词语。尽量不要连读,也没有必要故意对某些音进行重读。开始时您会可能会讲话比较快。请耐心一点,放慢速度。过了一段时间之后,您就会发现完全可以在不损失准确率的情况下提高讲话速率。不要对着麦克风大声讲话,请使用尽量平和的语音。正确佩戴麦克风对语音识别率非常重要。请确认麦克风接收头(在海绵套的里面)离您的嘴角大约一个拇指的距离,并检查麦克风上的白点正对着您的嘴部。不要将海绵套拿走,它可以起过滤作用。 不要将麦克风正对您的嘴部,以防受呼吸影响。每次使用麦克风时请不要变动麦克风的位置,例如麦克风的距离时远时近。如果进行大量文字录入,建议使用系统自带的字处理程序[语音板]。说出听写到语音板,语音板随即启动。这是一个类似写字板的编辑工具,语音板拥有写字板的所有功能而且增加了听写能力。语音听写与其他应用程序中的直接听写的注意事项基本一致,要想执行语音命令,在听写过程中稍作停顿,说出菜单命令即可。值得注意的是纠错窗口的使用。 在听写的过程中,ViaVoice可能会发生误识。您可以用纠错窗口对误识词进行纠错,以便ViaVoice以后提高识别率;或者让ViaVoice分析您已有的文档,以便让ViaVoice熟悉您的措辞和行文方式。在口述一段文字以后,查找误识的词。如果要对某个词或短语进行纠错,先选中该词,然后说出纠错就会探出纠错窗口。如果正确的词已经位于候选词列表中,念出该词的序号。这一动作将纠正所选的词或短语。如果正确的词不在候选词列表中,你可以单击纠错窗口的文本编辑框,输入正确的词/短语。念纠错或者按回车进行确定。z在听写完一篇文章以后,建议用文档分析程序对刚写的文章进行分析,从而修正语言模型,提高识别率。
创新互联专注于滨州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供滨州营销型网站建设,滨州网站制作、滨州网页设计、滨州网站官网定制、微信小程序开发服务,打造滨州网络公司原创品牌,更为您提供滨州网站排名全网营销落地服务。
iOS开发 - 语音播报功能的实现
近期项目中有个需求就是要实现类似微信或者支付宝的收款时的语音播报功能,于是笔者就开始了漫长的踩坑之路。
刚开始讨论实现方案时,安卓的小伙伴说可以使用WebSocket + 讯飞语音在线合成实现。于是最初的几天笔者自己也一直在这条路上走了很久,基本功能都已经实现了,项目在前台的时候,基本没问题。但是项目一进入后台大概半分钟的时间,就无法播报了。原因是iOS项目如果不做任何处理的话,在进入后台大概30s之后,程序就会进入类似休眠的状态,然后就不会再进行任何操作了
跟安卓的同事讨论之后,发现安卓有方法可以让程序一直在后台处于活跃状态,于是笔者也开始找寻保持项目后台运行的方法,大概有两种
在这里我们并没有发现,程序在后台收到推送时,作相应处理的方法,哪到底能不能收到推送后就进行处理呢?
iOS 10 之后 iOS推出了Notification Service Extension,我们可以在收到推送之后,通过这个Extension 我们可以有三十秒的时间来对这个推送进行处理
完成之后长这样
然后我们配置一下NotificationService
然后我们看下NotificationService.swift文件
在完成上述操作之后,再次收到推送的话,就会走NotificationService的逻辑了,可以打断点或者Log测试一下
需要注意的是 在推送的内容中 必须配置mutable-content字段,结构大致如下
做完上边的操作之后,我们可以知道什么时候去播报语音了,但是语音又要怎么去播报呢?
笔者这边也是试过几个方案,下边一一说来
笔者刚开始使用讯飞发现不行,然后又测试了系统自带的AVSpeech,发现也不好用,查资料才知道,苹果在近期的版本中,停用的在NotificationService中播放语音的功能,之前的某个版本应该可以这么操作。好吧,此方案Pass
既然不让我播,那我存起来总可以了吧,测试发现讯飞在线生成是可以的,也可以存到本地,但。。。是,UNMutableNotificationContent的sound好像只支持提前添加到项目中的文件,并不支持立即生成之后存到本地,然后再设置的功能。。。
笔者在项目中预先生成的文件如下(语音包通过百度语音开放平台在线生成 百度语音在下生成(拉到中间就有了) )
比如说我要播放“支付宝到账100元”,我就会发放多个通知,依次播放wx-pre,1,bai,yuan这几个语音,连贯起来就能达到要求
笔者能力有限,暂时想到的方法就是这个,有好的方法可以多多分享,沟通
苹果手机的语音功能在哪开?
苹果手机语音唤醒功能设置方法,以使用iPhone6s为例,首先打开iPhone6s主屏幕上的【设置】,然后在设置的列表里面,找到【Siri】并点击进去。
在【Siri】里面,把Siri开关、允许“嘿Siri”两个选项打开,接下来系统会启动一个语言训练教程,引导手机用户正确读出“嘿Siri”的词语,用来识别声音。,具体操作步骤如下:
1、首先打开iPhone6s主屏幕上的【设置】。
2、在设置的列表里面,找到【Siri】并点击进去。
3、在【Siri】里面,把Siri开关、允许“嘿Siri”两个选项打开。
4、接下来系统会启动一个语言训练教程,引导手机用户正确读出“嘿Siri”的词语,用来识别声音。
注意事项:
1、需要打开手机的设置。
2、要在【Siri】里面,把Siri开关、允许“嘿Siri”两个选项打开。
iOS 原生语音播报的使用
注:原生的语音播报功能是在7.0以后才出现的,在使用时要注意判断当前版本号。
#import AVFoundation/AVFoundation.h
@interface ViewController ()AVSpeechSynthesizerDelegate{
AVSpeechSynthesizer *_synthesizer;
}
if ([[[UIDevice currentDevice]systemVersion]integerValue]=7.0) {
NSString *broadCastStr = @"承德避暑山庄又名“承德离宫”或“热河行宫”,位于河北省承德市中心北部,武烈河西岸一带狭长的谷地上,是清代皇帝夏天避暑和处理政务的场避暑山庄始建于1703年,历经清康熙、雍正、乾隆三朝,耗时89年建成。避暑山庄以朴素淡雅的山村野趣为格调,取自然山水之本色,吸收江南塞北之风光,成为中国现存占地最大的古代帝王宫苑";
[self voiceBroadCastStr:broadCastStr];
}
[_synthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
[_synthesizer continueSpeaking];
/**
*AVSpeechBoundaryImmediate, 立即停
AVSpeechBoundaryWord 说完一个整词再停
*/
[_synthesizer stopSpeakingAtBoundary:AVSpeechBoundaryImmediate];
1、AVSPeechSynthesizer:用于控制语音播报的“开始”,“暂停”,“继续”,“停止,”;且含有代理,帮助我们监听当前语音的播报状态。
2、AVSpeechUtterance(发声的对象):用于指定播报的内容,语言的属性\voice,播报的速率\rate,播报的音量\voiume,以及音高\pitchMultiplier
3、AVSpeechSynthesisVoice: 用于设置语音的属性,包括语言类型/language,语音播报者名称/name,语音的标识/identifier,以及quality。
/*例如:language:zh-CN name:Li-mu quality:1
identifier:com.apple.ttsbundle.siri_male_zh-CN_compact*/
/*支持的所有声音
__NSArrayM 0x1742487c0(
[AVSpeechSynthesisVoice 0x174013040] Language: ar-SA, Name: Maged, Quality: Default [com.apple.ttsbundle.Maged-compact],
[AVSpeechSynthesisVoice 0x174010210] Language: cs-CZ, Name: Zuzana, Quality: Default [com.apple.ttsbundle.Zuzana-compact],
[AVSpeechSynthesisVoice 0x174013400] Language: da-DK, Name: Sara, Quality: Default [com.apple.ttsbundle.Sara-compact],
[AVSpeechSynthesisVoice 0x174012b00] Language: de-DE, Name: Anna, Quality: Default [com.apple.ttsbundle.Anna-compact],
[AVSpeechSynthesisVoice 0x174012dc0] Language: de-DE, Name: Helena, Quality: Default [com.apple.ttsbundle.siri_female_de-DE_compact],
[AVSpeechSynthesisVoice 0x174013140] Language: de-DE, Name: Martin, Quality: Default [com.apple.ttsbundle.siri_male_de-DE_compact],
[AVSpeechSynthesisVoice 0x1740131c0] Language: el-GR, Name: Melina, Quality: Default [com.apple.ttsbundle.Melina-compact],
[AVSpeechSynthesisVoice 0x174012bc0] Language: en-AU, Name: Catherine, Quality: Default [com.apple.ttsbundle.siri_female_en-AU_compact],
[AVSpeechSynthesisVoice 0x174012d40] Language: en-AU, Name: Gordon, Quality: Default [com.apple.ttsbundle.siri_male_en-AU_compact],
[AVSpeechSynthesisVoice 0x174012ec0] Language: en-AU, Name: Karen, Quality: Default [com.apple.ttsbundle.Karen-compact],
[AVSpeechSynthesisVoice 0x174012b40] Language: en-GB, Name: Arthur, Quality: Default [com.apple.ttsbundle.siri_male_en-GB_compact],
[AVSpeechSynthesisVoice 0x174012c40] Language: en-GB, Name: Daniel, Quality: Default [com.apple.ttsbundle.Daniel-compact],
[AVSpeechSynthesisVoice 0x174013100] Language: en-GB, Name: Martha, Quality: Default [com.apple.ttsbundle.siri_female_en-GB_compact],
[AVSpeechSynthesisVoice 0x174013240] Language: en-IE, Name: Moira, Quality: Default [com.apple.ttsbundle.Moira-compact],
[AVSpeechSynthesisVoice 0x174012730] Language: en-US, Name: Aaron, Quality: Default [com.apple.ttsbundle.siri_male_en-US_compact],
[AVSpeechSynthesisVoice 0x174012d00] Language: en-US, Name: Fred, Quality: Default [com.apple.speech.synthesis.voice.Fred],
[AVSpeechSynthesisVoice 0x1740132c0] Language: en-US, Name: Nicky, Quality: Default [com.apple.ttsbundle.siri_female_en-US_compact],
[AVSpeechSynthesisVoice 0x1740133c0] Language: en-US, Name: Samantha, Quality: Default [com.apple.ttsbundle.Samantha-compact],
[AVSpeechSynthesisVoice 0x1740134b0] Language: en-ZA, Name: Tessa, Quality: Default [com.apple.ttsbundle.Tessa-compact],
[AVSpeechSynthesisVoice 0x174013280] Language: es-ES, Name: Monica, Quality: Default [com.apple.ttsbundle.Monica-compact],
[AVSpeechSynthesisVoice 0x174013380] Language: es-MX, Name: Paulina, Quality: Default [com.apple.ttsbundle.Paulina-compact],
[AVSpeechSynthesisVoice 0x174013440] Language: fi-FI, Name: Satu, Quality: Default [com.apple.ttsbundle.Satu-compact],
[AVSpeechSynthesisVoice 0x174012ac0] Language: fr-CA, Name: Amelie, Quality: Default [com.apple.ttsbundle.Amelie-compact],
[AVSpeechSynthesisVoice 0x174012c80] Language: fr-FR, Name: Daniel, Quality: Default [com.apple.ttsbundle.siri_male_fr-FR_compact],
[AVSpeechSynthesisVoice 0x174013080] Language: fr-FR, Name: Marie, Quality: Default [com.apple.ttsbundle.siri_female_fr-FR_compact],
[AVSpeechSynthesisVoice 0x1740134f0] Language: fr-FR, Name: Thomas, Quality: Default [com.apple.ttsbundle.Thomas-compact],
[AVSpeechSynthesisVoice 0x174012b80] Language: he-IL, Name: Carmit, Quality: Default [com.apple.ttsbundle.Carmit-compact],
[AVSpeechSynthesisVoice 0x174012f80] Language: hi-IN, Name: Lekha, Quality: Default [com.apple.ttsbundle.Lekha-compact],
[AVSpeechSynthesisVoice 0x1740130c0] Language: hu-HU, Name: Mariska, Quality: Default [com.apple.ttsbundle.Mariska-compact],
[AVSpeechSynthesisVoice 0x174012c00] Language: id-ID, Name: Damayanti, Quality: Default [com.apple.ttsbundle.Damayanti-compact],
[AVSpeechSynthesisVoice 0x174012a40] Language: it-IT, Name: Alice, Quality: Default [com.apple.ttsbundle.Alice-compact],
[AVSpeechSynthesisVoice 0x174012d80] Language: ja-JP, Name: Hattori, Quality: Default [com.apple.ttsbundle.siri_male_ja-JP_compact],
[AVSpeechSynthesisVoice 0x174012f00] Language: ja-JP, Name: Kyoko, Quality: Default [com.apple.ttsbundle.Kyoko-compact],
[AVSpeechSynthesisVoice 0x174013340] Language: ja-JP, Name: O-ren, Quality: Default [com.apple.ttsbundle.siri_female_ja-JP_compact],
[AVSpeechSynthesisVoice 0x1740135f0] Language: ko-KR, Name: Yuna, Quality: Default [com.apple.ttsbundle.Yuna-compact],
[AVSpeechSynthesisVoice 0x174012cc0] Language: nl-BE, Name: Ellen, Quality: Default [com.apple.ttsbundle.Ellen-compact],
[AVSpeechSynthesisVoice 0x174010060] Language: nl-NL, Name: Xander, Quality: Default [com.apple.ttsbundle.Xander-compact],
[AVSpeechSynthesisVoice 0x174013300] Language: no-NO, Name: Nora, Quality: Default [com.apple.ttsbundle.Nora-compact],
[AVSpeechSynthesisVoice 0x174012930] Language: pl-PL, Name: Zosia, Quality: Default [com.apple.ttsbundle.Zosia-compact],
[AVSpeechSynthesisVoice 0x174013000] Language: pt-BR, Name: Luciana, Quality: Default [com.apple.ttsbundle.Luciana-compact],
[AVSpeechSynthesisVoice 0x174012e40] Language: pt-PT, Name: Joana, Quality: Default [com.apple.ttsbundle.Joana-compact],
[AVSpeechSynthesisVoice 0x174012e00] Language: ro-RO, Name: Ioana, Quality: Default [com.apple.ttsbundle.Ioana-compact],
[AVSpeechSynthesisVoice 0x174013200] Language: ru-RU, Name: Milena, Quality: Default [com.apple.ttsbundle.Milena-compact],
[AVSpeechSynthesisVoice 0x174012f40] Language: sk-SK, Name: Laura, Quality: Default [com.apple.ttsbundle.Laura-compact],
[AVSpeechSynthesisVoice 0x174012a80] Language: sv-SE, Name: Alva, Quality: Default [com.apple.ttsbundle.Alva-compact],
[AVSpeechSynthesisVoice 0x174012e80] Language: th-TH, Name: Kanya, Quality: Default [com.apple.ttsbundle.Kanya-compact],
[AVSpeechSynthesisVoice 0x174013570] Language: tr-TR, Name: Yelda, Quality: Default [com.apple.ttsbundle.Yelda-compact],
[AVSpeechSynthesisVoice 0x174012fc0] Language: zh-CN, Name: Li-mu, Quality: Default [com.apple.ttsbundle.siri_male_zh-CN_compact],
[AVSpeechSynthesisVoice 0x174012950] Language: zh-CN, Name: Ting-Ting, Quality: Default [com.apple.ttsbundle.Ting-Ting-compact],
[AVSpeechSynthesisVoice 0x1740135b0] Language: zh-CN, Name: Yu-shu, Quality: Default [com.apple.ttsbundle.siri_female_zh-CN_compact],
[AVSpeechSynthesisVoice 0x1740129a0] Language: zh-HK, Name: Sin-Ji, Quality: Default [com.apple.ttsbundle.Sin-Ji-compact],
[AVSpeechSynthesisVoice 0x174013180] Language: zh-TW, Name: Mei-Jia, Quality: Default [com.apple.ttsbundle.Mei-Jia-compact]
)
*/
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance
{
NSLog(@"已经开始播报");NSLog(@"判断播报状态%u\n%u",_synthesizer.isSpeaking,_synthesizer.isPaused);//1,0
}
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance *)utterance
{
NSLog(@"已经暂停播报");
NSLog(@"判断播报状态%u\n%u",_synthesizer.isSpeaking,_synthesizer.isPaused);//1,1
}
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance
{
NSLog(@"已经完成播报");
NSLog(@"判断播报状态%u\n%u",_synthesizer.isSpeaking,_synthesizer.isPaused);//0,0
}
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance *)utterance
{
NSLog(@"已经停止播报");
}
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance *)utterance
{
NSLog(@"继续播报");
NSLog(@"判断播报状态%u\n%u",_synthesizer.isSpeaking,_synthesizer.isPaused);//1,0
}
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer willSpeakRangeOfSpeechString:(NSRange)characterRange utterance:(AVSpeechUtterance *)utterance
{
}
iOS 开发的app与音乐播放语音冲突问题
我们常常会在使用app的时候,边听音乐(网易云音乐,qq音乐等)边使用软件,如果我们在app中使用了声音,例如“叮~”的一声 提醒,就会导致音乐的停止播放。而像微信中的语音播放,会在播放完成后音乐恢复播放,这样的体验就很好,那么需要怎么做呢?其实很简单,只需要一句话就可以。
当你的app中的声音播放完毕后,加上这一句话,被打断的音乐便会恢复播放了。
当然还可以设置让app的声音和其他音乐兼容(默认是不兼容的)
withOptions后面的属性是一个枚举,不同的类型会有不同的效果,自己试试吧!
分享标题:ios语音功能开发,ios的语音控制
当前链接:http://azwzsj.com/article/hoidsh.html