- AVFoundation 文本播报
MonKey_Money
1.使用的主要类1.1AVSpeechSynthesizer通过AVSpeechSynthesizer的实例变量speakUtterance:AVSpeechUtterance的实例变量实现文本播放。1.2AVSpeechUtteranceAVSpeechUtterance初始化时写入要说的文本。可以设置voice声音,rate说话的速度,pitchMultiplier音调,postUtteran
- TTS语音播报
Arvin_雾里看花
简言:文本转语音是从iOS7之后就自带的功能,如果对语音没有特殊的要求,自带的用起来还是不错的一:TTS主要类需要导入AVFoundationAVSpeechSynthesizer:语音合成器AVSpeechUtterance:声音AVSpeechSynthesisVoice:话语二:示例代码三:队列管理AVSpeechSynthesizer本身就是一个队列管理器,全局属性来管理,还可以暂停,继续
- iOS-系统语音播报.txt文本
329fd8af610c
本篇记录一下系统播放文本的功能。主要以代码+注释为展示方式。#import"ViewController.h"#import@interfaceViewController()@property(nonatomic,strong)AVSpeechSynthesizer*synthesizer;@property(nonatomic,strong)UIButton*button1;@property
- [AXTTSCommon] _BeginSpeaking: couldn't begin playback
秋天的田野
AVSpeechSynthesizer后台播放时电话中断暂停和恢复播放报_BeginSpeaking:couldn'tbeginplayback,需要配置开启后台任务1.在AppDelegatedidFinishLaunchingWithOptions中加入以下代码、、、NSError*error=NULL;AVAudioSession*session=[AVAudioSessionsharedI
- iOS 开发-简单的语音识别
keelZJP
AVSpeechSynthesizer*speechManger=[[AVSpeechSynthesizeralloc]init];speechManger.delegate=self;//识别出英文外的其他语音要根据手机设置AVSpeechUtterance*aut=[AVSpeechUtterancespeechUtteranceWithString:@"hellow,你好"];//语速aut
- iOS开发-AVFAudio之AVSpeechSynthesizer语音合成(文本转语音)功能
BruceGerGer
移动开发iphone开发Objective-cios语音合成文本转语音
iOS开发-AVFAudio之AVSpeechSynthesizer语音合成(文本转语音)功能之前开发中遇到需要文本转语音。好在系统提供了实现该功能的API,即AVFAudio中的AVSpeechSynthesizer。可以使用AVFAudio提供的AVSpeechSynthesizer实现文本转语音(语音合成)功能,这个类用来播放一个或多个语言内容,这些语音内容都是AVSpeechUtteran
- AVSpeechSynthesizer 语音合成器
Xtuphe
原文:https://developer.apple.com/documentation/avfoundation/avspeechsynthesizerAVSpeechSynthesizer可以使iOS针对给定文本生成语音,并提供方法来控制或监听正在进行的语音。要把文本读出来,首先要创建一个包含文本的AVSpeechUtterance实例。(或者可以用这个实例通过修改参数来控制语音,如声音,音调
- [iOS开发]AVFoundation浅学习
Billy Miracle
OCiOSUIiosobjective-c移动开发
写在前面:众所周知,手机可以播放视频,音乐,甚至和你“交谈”,那怎么实现这些呢?正文合成语音:-(void)speakHintMessage{//这样子可以简单的播放一段语音AVSpeechSynthesizer*synthesizer=[[AVSpeechSynthesizeralloc]init];//Utterance表达方式AVSpeechSynthesisVoice*voice=[AVS
- 文字语音播放之AVSpeechSynthesizer简单使用
酱油之神
引入#import使用及介绍AVSpeechSynthesizer调用speakUtterance方法来将文本转化为语音,而speakUtterance方法需要一个参数,这个参数是AVSpeechUtterance实例的,它将包含所要读的文本,并且可以设置朗读的速度,强度和音量等。//最主要的几行代码如下:AVSpeechSynthesizer*synthesizer=[[AVSpeechSynt
- 如何在iOS App中实现朗读发声功能
不要虚度美好的时光
1.包含头文件:#import2.声明变量:@property(nonatomic,strong)AVSpeechSynthesizer*synthesizer;@property(nonatomic,strong)AVSpeechUtterance*utterance;3.初始化点击按钮,初始化"语音合成器"://开始朗读按钮UIButton*selectedBtn=[UIButtonbutto
- AVFoundation 文本转语音和音频录制 播放
kvoxxx
现在你应该对AVFoundation有了比较深入的了解,并且对数字媒体的细节也有了一定认识,下面介绍一下AVFoundation的文本转语音功能AVSpeechSynthesizer开发者可以使用AVFoundation中的AVSpeechSynthesizer类向iOS应用程序中添加类似功能,这个类用来播放一个或多个语音内容,这些语音内容都是名为AVSpeechUtterance的类的实例。具体
- Swift. Notification Service Extension实现语音播报
相沫_
总的来说,实现收款到账语音合成播报,真的是走了很长的路,踩过很多的坑。避免更多的人重复踩坑,我便记录走过哪些路,掉过哪些坑...一.先来说第一种,不推荐再用。因为苹果粑粑不会给你审核通过的。1.推送就不说了,我们使用的是极光推送。2.语音合成使用的是AVSpeechSynthesizer为了app退到后台进程不被杀掉,target->capabilities中开启了backgroundmodes中
- AVSpeechSynthesis使用详解
爱吃榴莲的程序员
前言从IOS5开始,IOS系统已经在siri上集成了语音合成的功能,但是是私有API。但是在IOS7,新增了一个简单的API----AVSpeechSynthesizer来做这件事情。使用步骤1.使用iOS系统的文字转语音需要用到AVFoundation框架image.png2.引入头文件#import实现语音播报功能我们只要用到两个类:AVSpeechSynthesizerAVSpeechUtt
- AVSpeechSynthesizer 文本合成语音
StoveeLiu
官方文档AVSpeechSynthesizer在iOS系统将文本转化语音。在MacOS中使用NSSpeechSynthesizer。AVSpeechSynthesizer*synthesizer=[[AVSpeechSynthesizeralloc]init];AVSpeechUtterance*utterance=[AVSpeechUtterancespeechUtteranceWithStri
- iOS AVSpeechSynthesizer 语音播报以及后台播报设置(Swift)
wiiale
Xcode配置如果需要后台播报语音,需要到Target->Capabilities选中BackgroundModes的Audio...选项。若不勾选此项,程序在后台运行的时候调用语音播报会报出codeCannotStartPlaying错误。管理类文件importAVFoundationclassSpeechUtteranceManager:NSObject{///单例管理语音播报比较适用于多种类
- AVFoundation之AVSpeechSynthesizer播放语音内容
西风那个吹呀吹
MacOS一直有一个NSSpeechSynthersizer类,可以很方便的在Cocoa应用程序中添加“文本到语音”的功能。IOS中同样也有这个简便的功能,AVFoundation中的AVSpeechSynthesizer可以用来播放一个或多个语音内容,这些语音内容都是名为AVSpeechUtterance类的实例。AVSpeechSynthesizer*synthesizer=[[AVSpeec
- iOS 原生语音播报的使用
ninazhang
注:原生的语音播报功能是在7.0以后才出现的,在使用时要注意判断当前版本号。一、实现语音播报相关方法1、在使用播报功能的类中引入“头文件”(required)或“代理”(optional)#import@interfaceViewController(){AVSpeechSynthesizer*_synthesizer;}2、开始语音播报if([[[UIDevicecurrentDevice]sy
- AVSpeechSynthesizer 文本转声音
狗娃_
overview.pngAVSpeechSynthesizer可以在iOS设备上讲文本内容转化为声音,并提供了一系列方法可以控制正在播放的语音内容。先看代码://初始化一个合成器letsythesizer=AVSpeechSynthesizer()//初始化需要转换的文本letutterrance=AVSpeechUtterance.init(string:"这是一段内容,请不要静音,因为等会你会
- iOS 语音读字符串
f6cbbac3d00e
AVSpeechSynthesizer*av=[[AVSpeechSynthesizeralloc]init];AVSpeechUtterance*utterance=[[AVSpeechUtterancealloc]initWithString:@"恭喜你签到成功"];//需要转换的文本[avspeakUtterance:utterance];
- AVSpeechSynthesizer代理方法无法调用willSpeakRangeOfSpeechString
Janise001
在开发小说阅读完成后自定了一个有声阅读的小需求,但是问题也接踵而至,没有问题的开发过程不是一个好的需求,这关于逻辑、语法、算法啥啥啥的,不扯淡了,说正经的,我在使用AVSpeechSynthesizer阅读某段文字,这段文字中包含一个键盘为中文模式下的感叹号,其余符号不变,我在willSpeakRangeOfSpeechString方法中添加了在控制台打印阅读内容的语句,在playground中使
- AVSpeechSynthesizer (语音播报)
一生信仰
标签:AVFoundationAVSpeechSynthesizerAnobjectthatproducessynthesizedspeechfromtextutterancesandprovidescontrolsformonitoringorcontrollingongoingspeechAVFoundation中提供了一个AVSpeechSynthesizer类来向app中添加朗诵文本的功能
- AVSpeechSynthesizer
泥孩儿0107
iOS中的AVSpeechSynthesizer可以很轻松的实现实现文本到语音的功能,基本代码如下:self.speechSynthesizer=[[AVSpeechSynthesizeralloc]init];AVSpeechUtterance*utterance=[AVSpeechUtterancespeechUtteranceWithString:@"FlyElephant"];AVSpee
- iOS中的音频文件合成
丶过客匆匆
音频合成:把多个本地音频文件合成一个音频文件使用场景:收款播报类型app、用固定音频文件组合进行语音播报题外话:之前使用UNNotificationServiceExtension+AVSpeechSynthesizer做语音播报,iOS12之后的推送扩展程序不能使用AVSpeechSynthesizer播报后最开始想到了本地推送+音频拼接的方法解决此问题,之后顺便也考虑了下能否合成音频来解决频繁
- iOS开发TTS技术即文本转语音
mengjun_win
iOS开发TTS文本转语音
iOS开发TTS技术即文本转语音iOS系统文本转语音的实现在iOS7之前,想要实现语音播报文字内容,可能需要第三方资源库来实现。现在在iOS之后,系统为我们提供了语音播报文字的功能,我们不仅可以播报英语内容,也可以播报汉语文字实现。TTS[TextToSpeech]:主要依赖AVSpeechSynthesizer,AVSpeechUtterance,AVSpeechSynthesisVoice,要
- 如何使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(4)
颐和园
iPhone开发
控制:我们必须学会控制大师尤达(电影《星球大战》)曾有言:关键在于控制。这本故事书是一个词一个词地念出来的,我准备为它增加两个按钮,这样我们就可以实时地调整语音合成时的音高和语速。仍然是RWTPageViewController.m,在nextSpeechIndex属性后声明下列属性:@property(nonatomic,assign)floatcurrentPitchMultiplier;@p
- iOS PCM文件转MP3格式
周星星_
介绍下我再项目中用到的一个技术点。开发中遇到这样一个需求就是将文本转为语音,并已倒计时的方式显示读秒。大家都知道iOS7.0之后,苹果就提供AVSpeechSynthesizer这个类公开发者使用完成文本转语音,也很好用。但是他只能满足我第一个需求,并不能完成读秒进行显示。这样我在开发中就用到了一个第三方库,既可以将文本转语音也能读秒进行显示。只不过生成的音频文件是.pcm格式的,这样就需要我们转
- iOS中的语音朗读
chengzhong5055
项目中要做一个翻译类型的词典.需要用到语音朗读,以前没有做过这个,最开始想到的是讯飞的SDK...后来无意中在网上看到一个demo,发现原来AVSpeechSynthesizer可以帮助我们解决很多事情,不由感慨苹果的强大.代码:#import//添加依赖库-(IBAction)btn_read:(id)sender{AVSpeechSynthesizer*synthesizer=[[AVSpee
- 文字识别
为什么划船不靠桨
今天发现了一个很好玩的功能,语音识别和文字识别,这一篇文章先记录下文字识别.AVFoundation中提供了一个AVSpeechSynthesizer类来向app中添加朗诵文本的功能.这个类用来播放一个或者多个语音内容,每条语音内容都是一个AVSpeechUtterance对象.(快速记忆:一个语音合成器(SpeechSynthesizer)播放需要一段语音内容(SpeechUtterance))
- iOS音频基础概念-(1)
萧修
一、音频相关的iOS类库1、音频相关的iOS类库使用AVAudioSession负责调解APP和iOS系统里面的行为,比如其他APP播放声音的时候,闹钟、电话中断,耳机插拔。使用AVSpeechSynthesizer演讲播放器播放语音,比如某一段文字,用于地图语音导航,文字转声音使用AVSpeechUtterance,将一段文字准备成一段可供硬件理解,设置语音的停顿,语速,语音种类等方法一、AVA
- ios语音朗读英文
FengxinLi
需要导入AVFoundation框架。AVSpeechSynthesizer*synthesizer=[[AVSpeechSynthesizeralloc]init];AVSpeechUtterance*utterance=[AVSpeechUtterancespeechUtteranceWithString:@"howareyou"];[utterancesetRate:0.1];[synthe
- Java常用排序算法/程序员必须掌握的8大排序算法
cugfy
java
分类:
1)插入排序(直接插入排序、希尔排序)
2)交换排序(冒泡排序、快速排序)
3)选择排序(直接选择排序、堆排序)
4)归并排序
5)分配排序(基数排序)
所需辅助空间最多:归并排序
所需辅助空间最少:堆排序
平均速度最快:快速排序
不稳定:快速排序,希尔排序,堆排序。
先来看看8种排序之间的关系:
1.直接插入排序
(1
- 【Spark102】Spark存储模块BlockManager剖析
bit1129
manager
Spark围绕着BlockManager构建了存储模块,包括RDD,Shuffle,Broadcast的存储都使用了BlockManager。而BlockManager在实现上是一个针对每个应用的Master/Executor结构,即Driver上BlockManager充当了Master角色,而各个Slave上(具体到应用范围,就是Executor)的BlockManager充当了Slave角色
- linux 查看端口被占用情况详解
daizj
linux端口占用netstatlsof
经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序
1、lsof -i:port
port为端口号
[root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080
COMMAND PID USER FD TY
- Hosts文件使用
周凡杨
hostslocahost
一切都要从localhost说起,经常在tomcat容器起动后,访问页面时输入http://localhost:8088/index.jsp,大家都知道localhost代表本机地址,如果本机IP是10.10.134.21,那就相当于http://10.10.134.21:8088/index.jsp,有时候也会看到http: 127.0.0.1:
- java excel工具
g21121
Java excel
直接上代码,一看就懂,利用的是jxl:
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import
- web报表工具finereport常用函数的用法总结(数组函数)
老A不折腾
finereportweb报表函数总结
ADD2ARRAY
ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。
示例:
ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7].
ADDARRAY([3,4, 1, 5, 7], "测试&q
- 游戏服务器网络带宽负载计算
墙头上一根草
服务器
家庭所安装的4M,8M宽带。其中M是指,Mbits/S
其中要提前说明的是:
8bits = 1Byte
即8位等于1字节。我们硬盘大小50G。意思是50*1024M字节,约为 50000多字节。但是网宽是以“位”为单位的,所以,8Mbits就是1M字节。是容积体积的单位。
8Mbits/s后面的S是秒。8Mbits/s意思是 每秒8M位,即每秒1M字节。
我是在计算我们网络流量时想到的
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
Spring 3 系列
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
- 高性能mysql 之 选择存储引擎(一)
annan211
mysqlInnoDBMySQL引擎存储引擎
1 没有特殊情况,应尽可能使用InnoDB存储引擎。 原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她 被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃 恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常
- UDP网络编程
百合不是茶
UDP编程局域网组播
UDP是基于无连接的,不可靠的传输 与TCP/IP相反
UDP实现私聊,发送方式客户端,接受方式服务器
package netUDP_sc;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Ine
- JQuery对象的val()方法执行结果分析
bijian1013
JavaScriptjsjquery
JavaScript中,如果id对应的标签不存在(同理JAVA中,如果对象不存在),则调用它的方法会报错或抛异常。在实际开发中,发现JQuery在id对应的标签不存在时,调其val()方法不会报错,结果是undefined。
- http请求测试实例(采用json-lib解析)
bijian1013
jsonhttp
由于fastjson只支持JDK1.5版本,因些对于JDK1.4的项目,可以采用json-lib来解析JSON数据。如下是http请求的另外一种写法,仅供参考。
package com;
import java.util.HashMap;
import java.util.Map;
import
- 【RPC框架Hessian四】Hessian与Spring集成
bit1129
hessian
在【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中介绍了基于Hessian的RPC服务的实现步骤,在那里使用Hessian提供的API完成基于Hessian的RPC服务开发和客户端调用,本文使用Spring对Hessian的集成来实现Hessian的RPC调用。
定义模型、接口和服务器端代码
|---Model
&nb
- 【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析
bit1129
Mahout
1.Mahout环境搭建
1.下载Mahout
http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz
2.解压Mahout
3. 配置环境变量
vim /etc/profile
export HADOOP_HOME=/home
- nginx负载tomcat遇非80时的转发问题
ronin47
nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port
详细如下:
该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的:
? 1 2 3 4 5
- java-17-在一个字符串中找到第一个只出现一次的字符
bylijinnan
java
public class FirstShowOnlyOnceElement {
/**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
* 1.int[] count:count[i]表示i对应字符出现的次数
* 2.将26个英文字母映射:a-z <--> 0-25
* 3.假设全部字母都是小写
*/
pu
- mongoDB 复制集
开窍的石头
mongodb
mongo的复制集就像mysql的主从数据库,当你往其中的主复制集(primary)写数据的时候,副复制集(secondary)会自动同步主复制集(Primary)的数据,当主复制集挂掉以后其中的一个副复制集会自动成为主复制集。提供服务器的可用性。和防止当机问题
mo
- [宇宙与天文]宇宙时代的经济学
comsci
经济
宇宙尺度的交通工具一般都体型巨大,造价高昂。。。。。
在宇宙中进行航行,近程采用反作用力类型的发动机,需要消耗少量矿石燃料,中远程航行要采用量子或者聚变反应堆发动机,进行超空间跳跃,要消耗大量高纯度水晶体能源
以目前地球上国家的经济发展水平来讲,
- Git忽略文件
Cwind
git
有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。
==== ==== ==== 一些牢骚
- MySQL连接数据库的必须配置
dashuaifu
mysql连接数据库配置
MySQL连接数据库的必须配置
1.driverClass:com.mysql.jdbc.Driver
2.jdbcUrl:jdbc:mysql://localhost:3306/dbname
3.user:username
4.password:password
其中1是驱动名;2是url,这里的‘dbna
- 一生要养成的60个习惯
dcj3sjt126com
习惯
一生要养成的60个习惯
第1篇 让你更受大家欢迎的习惯
1 守时,不准时赴约,让别人等,会失去很多机会。
如何做到:
①该起床时就起床,
②养成任何事情都提前15分钟的习惯。
③带本可以随时阅读的书,如果早了就拿出来读读。
④有条理,生活没条理最容易耽误时间。
⑤提前计划:将重要和不重要的事情岔开。
⑥今天就准备好明天要穿的衣服。
⑦按时睡觉,这会让按时起床更容易。
2 注重
- [介绍]Yii 是什么
dcj3sjt126com
PHPyii2
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。
Yii 最适合做什么?
Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应
- Linux SSH常用总结
eksliang
linux sshSSHD
转载请出自出处:http://eksliang.iteye.com/blog/2186931 一、连接到远程主机
格式:
ssh name@remoteserver
例如:
ssh
[email protected]
二、连接到远程主机指定的端口
格式:
ssh name@remoteserver -p 22
例如:
ssh i
- 快速上传头像到服务端工具类FaceUtil
gundumw100
android
快速迭代用
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOExceptio
- jQuery入门之怎么使用
ini
JavaScripthtmljqueryWebcss
jQuery的强大我何问起(个人主页:hovertree.com)就不用多说了,那么怎么使用jQuery呢?
首先,下载jquery。下载地址:http://hovertree.com/hvtart/bjae/b8627323101a4994.htm,一个是压缩版本,一个是未压缩版本,如果在开发测试阶段,可以使用未压缩版本,实际应用一般使用压缩版本(min)。然后就在页面上引用。
- 带filter的hbase查询优化
kane_xie
查询优化hbaseRandomRowFilter
问题描述
hbase scan数据缓慢,server端出现LeaseException。hbase写入缓慢。
问题原因
直接原因是: hbase client端每次和regionserver交互的时候,都会在服务器端生成一个Lease,Lease的有效期由参数hbase.regionserver.lease.period确定。如果hbase scan需
- java设计模式-单例模式
men4661273
java单例枚举反射IOC
单例模式1,饿汉模式
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
//私有的默认构造函数
private Singleton1() {}
//已经自行实例化
private static final Singleton1 singl
- mongodb 查询某一天所有信息的3种方法,根据日期查询
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
// 第一种方式:
coll.aggregate([
{$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}},
{$match:{sendDate: '2015-
- 二维数组转换成JSON
tangqi609567707
java二维数组json
原文出处:http://blog.csdn.net/springsen/article/details/7833596
public class Demo {
public static void main(String[] args) { String[][] blogL
- erlang supervisor
wudixiaotie
erlang
定义supervisor时,如果是监控celuesimple_one_for_one则删除children的时候就用supervisor:terminate_child (SupModuleName, ChildPid),如果shutdown策略选择的是brutal_kill,那么supervisor会调用exit(ChildPid, kill),这样的话如果Child的behavior是gen_