CN109509467B - 代码生成方法及装置 - Google Patents
代码生成方法及装置 Download PDFInfo
- Publication number
- CN109509467B CN109509467B CN201811294064.1A CN201811294064A CN109509467B CN 109509467 B CN109509467 B CN 109509467B CN 201811294064 A CN201811294064 A CN 201811294064A CN 109509467 B CN109509467 B CN 109509467B
- Authority
- CN
- China
- Prior art keywords
- voice
- structured data
- unique
- identifier
- voice function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000003044 adaptive effect Effects 0.000 claims abstract description 39
- 230000006870 function Effects 0.000 claims description 231
- 230000006978 adaptation Effects 0.000 claims description 54
- 238000004590 computer program Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
- G10L2015/223—Execution procedure of a spoken command
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Document Processing Apparatus (AREA)
- Telephone Function (AREA)
Abstract
本公开实施例提供一种代码生成方法及装置,该方法包括:获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。本公开实施例,可以自动生成结构化数据唯一标识和所述语音指令之间的适配代码,相比于人工生成语音功能的结构化数据唯一标识和语音指令之间的适配代码,效率较高且可以减小出错概率。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种代码生成方法及装置。
背景技术
随着终端技术的不断发展,终端上集成的功能越来越多,这也意味着用户在使用过程中操作变多,特别是车载终端,一定程度上会分散用户驾车时的注意力,造成安全隐患。
目前,为了方便用户操作,一些终端上集成了语音系统,使得用户可以通过语音实现对终端的部分控制,例如,通过语音指令控制音视频播放、导航、拨打电话等。具体的,语音系统中的语音引擎可以将接收到的语音转换为结构化数据,并输出结构化数据唯一标识给语音系统中的指令路由,指令路由将接收到的结构化数据唯一标识适配成对应的语音指令并路由给对应业务模块执行。
然而,现有技术中,语音功能的结构化数据唯一标识和语音指令之间的适配主要是通过人工在代码中逐条对应,以得到适配代码,造成效率较低以及出错概率较高。
发明内容
本公开实施例提供一种代码生成方法及装置,解决现有技术中由于人工配置语音功能的结构化数据唯一标识和语音指令之间的适配代码,导致的效率较低以及易出错的问题。
第一方面,本公开实施例提供了一种代码生成方法,该方法包括:
获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;
根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,包括:
基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,包括:
分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;
按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令,包括:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码,包括:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述获取语音功能文件之前,所述方法还包括:
获取结构化数据唯一标识和其对应的语音指令;
按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
可选的,所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,所述方法还包括:
将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
可选的,所述语音功能文件为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
可选的,所述语音功能文件为所述语音功能配置文件,所述获取语音功能文件之前,所述方法还包括:
调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
第二方面,本公开还提供一种代码生成装置,该装置包括:
第一获取模块,用于获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;
第一生成模块,用于根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述第一生成模块,包括:
第一生成单元,用于基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述第一生成模块,包括:
读取单元,用于分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;
第二生成单元,用于按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述读取单元具体用于:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
所述第二生成单元具体用于:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述装置还包括:
第二获取模块,用于所述获取语音功能文件之前,获取结构化数据唯一标识和其对应的语音指令;
存储模块,用于按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
可选的,所述装置还包括:
写入模块,用于所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
可选的,所述语音功能文件为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
可选的,所述语音功能文件为所述语音功能配置文件,所述装置还包括:
第二生成模块,用于所述获取语音功能文件之前,调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
第三方面,本公开还提供一种代码生成装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的代码生成方法的步骤。
第四方面,本公开还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的代码生成方法的步骤。
本公开实施例中,可以基于语音功能文件中结构化数据唯一标识和语音指令之间的对应关系,自动生成结构化数据唯一标识和所述语音指令之间的适配代码,相比于人工生成语音功能的结构化数据唯一标识和语音指令之间的适配代码,效率较高且可以减小出错概率。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的代码生成方法的流程图;
图2是本公开实施例提供的基于APT生成适配代码的流程图;
图3是本公开实施例提供的注解处理器的处理方法的流程图;
图4是本公开实施例提供的代码生成装置的结构图之一;
图5是本公开实施例提供的代码生成装置的结构图之二。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开实施例提供一种代码生成方法。参见图1,图1是本公开实施例提供的代码生成方法的流程图,如图1所示,包括以下步骤:
步骤101:获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系。
步骤102:根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
本公开实施例中,上述结构化数据唯一标识可以用于唯一识别语音系统的语音引擎将所接收到的语音转换得到的结构化数据。
实际应用中,语音系统中的语音引擎可以将接收到的语音转换为结构化数据,并输出结构化数据唯一标识给语音系统中的指令路由,指令路由可以将接收到的结构化数据唯一标识适配成对应的语音指令,并路由给对应业务模块(例如,音视频播放模块、导航模块、通话模块等)执行。
可选的,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储。
本公开实施例中,上述预设格式可以包括每个结构化数据唯一标识和其对应的语音指令可以打包成一个数据包,或是每个结构化数据唯一标识和其对应的语音指令对应数据表的一行或是一列,或是每个结构化数据唯一标识和其对应的语音指令对应文本文件的一行,或是一列,并通过预设分隔符分隔,等等。
可选的,上述语音功能文件可以为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
在一种实施方式中,上述语音功能文件可以为语音功能列表,其中,上述语音功能列表中的每一项均可以包括结构化数据唯一标识以及其对应的语音指令。例如,如表1所示。可以理解的是,上述语音功能列表中还可以存储有其他数据,例如,语音功能名称。
表1
实际应用中,语音功能开发过程中,产品经理通常会生成带有语音指令的语音功能列表,该语音功能列表中会明确出语音功能和语音指令的对应关系,例如,上述语音功能列表中可以包括语音功能名称、语音引擎输出的结构化数据唯一标识以及对应的语音指令,作为语音开发过程中语音指令适配的基础。具体的,本公开实施例直接基于该语音功能列表生成结构化数据唯一标识和语音指令之间的适配代码,无需其他转换操作,实现较为简便。
在另一种实施方式中,上述语音功能文件也可以是语音功能配置文件,例如,名称为conf.txt的配置文件。上述语音功能配置文件中每一行均可以包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔,其中,上述预设符号可以是任意符号,例如,$$、&&、||等。
例如,上述语音功能配置文件中结构化数据唯一标识(即dataIndex)和其对应的语音指令(即command)的格式可以如下所示:
dataIndex1$$command1
dataIndex2$$command2
dataIndex3$$command3
…
实际应用中,可以将任意包括结构化数据唯一标识以及其对应的语音指令的文件转化为语音功能配置文件,并基于语音功能配置文件生成结构化数据唯一标识和语音指令之间的适配代码,从而可以提高用于生成结构化数据唯一标识和语音指令之间的适配代码的处理程序的通用性。
可选的,所述语音功能文件为所述语音功能配置文件,所述获取语音功能文件之前,所述方法还包括:
调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
实际应用中,由于语音功能开发过程中通常会预先生成语音功能列表,因此,可以通过预设脚本程序解析上述语音功能列表,自动生成上述语音功能配置文件。
例如,上述预设脚本程序可以从语音功能列表中读取各个结构化数据唯一标识和其对应的语音指令,并按照预设格式保存在名称为conf.txt的配置文件中,其中,预设格式可以按照实际情况进行合理设置,例如,每个功能点一行且结构化数据唯一标识和其对应的语音指令通过分隔符分隔,如下所示:
dataIndex$$command
本公开实施例通过调用预设脚本程序解析语音功能列表,并生成语音功能配置文件,不仅可以节省人工操作,而且基于生成语音功能配置文件生成结构化数据唯一标识和语音指令之间的适配代码,可以提高用于生成结构化数据唯一标识和语音指令之间的适配代码的处理程序的通用性。
可选的,上述语音功能文件可以保存在工程目录下的特定文件夹下,便于读取语音功能文件中的内容。
本公开实施例中,上述结构化数据唯一标识和所述语音指令之间的适配代码可以包括用于结构化数据唯一标识和语音指令之间适配的代码,从而可以将结构化数据唯一标识适配成其对应的语音指令。
例如,结构化数据唯一标识(即dataIndex)和语音指令(即command)之间的适配代码的一种可选的格式可以如下:
public static final String command1=dataIndex1;
public static final String command2=dataIndex2;
public static final String command3=dataIndex3;
…
该步骤中,可以解析语音功能文件,得到语音功能文件中的每个结构化数据唯一标识和其对应的语音指令,可以根据每个结构化数据唯一标识和其对应的语音指令生成每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
本公开实施例的代码生成方法,通过获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。从而可以基于语音功能文件中结构化数据唯一标识和语音指令之间的对应关系,自动生成结构化数据唯一标识和所述语音指令之间的适配代码,相比于人工生成语音功能的结构化数据唯一标识和语音指令之间的适配代码,效率较高且可以减小出错概率。
可选的,上述步骤102,也即所述根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,包括:
分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;
按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
本公开实施例中,上述预设代码格式可以根据实际需求进行合理设置,例如,可以如下所示:
public static final String command=dataIndex;
该实施方式中,可以分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令,并按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码,例如,得到如下所示的适配代码:
public static final String command1=dataIndex1;
public static final String command2=dataIndex2;
public static final String command3=dataIndex3;
…
此外,还可以将所生成的全部的结构化数据唯一标识和其对应的语音指令之间的适配代码写入目标源文件(例如,名称为source.java的源文件)中,便于语音系统的功能模块调用,以实现对应的功能逻辑。
本公开实施例中,通过分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令,并按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码,使得结构化数据唯一标识和语音指令之间的适配代码生成较为简便。
可选的,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令,包括:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码,包括:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
本公开实施例中,上述预设格式可以包括每个结构化数据唯一标识和其对应的语音指令打包成一个数据包,或是每个结构化数据唯一标识和其对应的语音指令对应数据表的一行或是一列,或是每个结构化数据唯一标识和其对应的语音指令对应文本文件的一行或是一列,并通过预设分隔符分隔,等等。
相应的,上述数据内容可以是指结构化数据唯一标识和其对应的语音指令大包得到的数据包,或是结构化数据唯一标识和其对应的语音指令所对应的数据表的一行或是一列数据,或是结构化数据唯一标识和其对应的语音指令所对应的文本文件的一行或是一列数据等。
在一些实施例中,可以分别读取所述语音功能文件中按照预设格式存储的每个数据内容,并对上述每个数据内容进行分割,得到每个数据内容中的结构化数据唯一标识和其对应的语音指令,从而可以按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
例如,在每个结构化数据唯一标识和其对应的语音指令存储于语音功能配置文件的一行,并通过预设符号分隔时,可以分别读取语音功能配置文件的每一行数据,并通过预设符号分割每个数据内容中的结构化数据唯一标识和其对应的语音指令,并按照预设代码格式“public static final String command=dataIndex;”生成结构化数据唯一标识和其对应的语音指令之间的适配代码。
本公开实施例中所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储,便于分别读取并分割每个结构化数据唯一标识和其对应的语音指令,从而提高适配代码的生成效率。
实际应用中,上述语音功能文件可以是预先从其他电子设备(例如,服务器)获取并存储于本地,也可以是在本地生成。
可选的,所述获取语音功能文件之前,所述方法还包括:
获取结构化数据唯一标识和其对应的语音指令;
按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
本公开实施例中,可以是从用户上传的包括结构化数据唯一标识和语音指令的文件中,获取结构化数据唯一标识和其对应的语音指令,并可以按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
本公开实施例通过获取结构化数据唯一标识和其对应的语音指令;按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中,便于在结构化数据唯一标识和其对应的语音指令存在更新时,可以较为便捷的生成新的语音功能文件。
可选的,所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,所述方法还包括:
将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
本公开实施例中,将所生成的全部的结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件(例如,名称为source.java的源文件)中,便于语音系统的功能模块调用,以实现对应的功能逻辑。
可选的,上述步骤102,也即所述根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,可以包括:
基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
本公开实施例中,注解处理工具(Annotation Processing Tool,简称为APT)(也称为注解处理器)可以在代码编译期解析注解。其中,注解(也即Annotation)是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用注解,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
可选的,参见图2,基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,可以包括如下步骤:
步骤201:定义注解。
该步骤中,可以遵循APT基本流程,完成定义注解等基本配置。
例如,定义注解@Source可以包括如下代码:
步骤202:定义注解处理器。
该步骤中,注解处理器用于定义适配代码的生成方式。
例如,参见图3,上述注解处理器的处理方法可以包括如下步骤:
步骤301、逐行读取语音功能配置文件(如conf.txt文件)中的内容。
上述语音功能配置文件中的内容也即结构化数据唯一标识和对应的语音指令。
步骤302、根据分隔符分割结构化数据唯一标识和其对应的语音指令。
步骤303、将分割后的结构化数据唯一标识和其对应的语音指令,按照预设代码格式生成适配代码。
例如,上述预设代码格式可以如下所示:
public static final String command=dataIndex;
上述适配代码也即结构化数据唯一标识和其对应的语音指令之间的适配代码。
步骤304、当语音功能配置文件中的内容全部被读取时,将生成的所有适配代码写入目标源文件中。
例如,上述目标源文件可以是名称为source.java的java源文件中。
可选的,本公开实施例可以利用JavaPoet、JavaWriter或CodeModel等定义上述注解处理器的处理方法。
其中,上述JavaPoetJavaPoet、JavaWriter和CodeModel均可以用于生成.java源文件。
继续参见图2,步骤203、在编译配置文件中注册注解处理器。
在通过步骤b定义注解处理器后,可以在编译配置文件中注册该注解处理器。
步骤204、编译代码。
该步骤中,编译期间,APT扫描代码中的自定义注解,例如,@Source,若找到对应注解,APT依据预先定义的注解处理器的处理方法生成结构化数据唯一标识和对应的语音指令之间的适配代码,并对所生成的适配代码进行编译。
具体的,完成代码编译后,可以在工程中找到目标源文件(如名称为source.java的java源文件),从而语音系统中的功能模块可以调用其中的适配代码完成相应的功能逻辑。
需要说明的是,上述步骤201至步骤204仅是作为示例对上述基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码进行说明,本公开实施例并不限于此种方式。
本公开实施例基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,可以在不改变原有代码逻辑的情况下,自动生成并添加结构化数据唯一标识和所述语音指令之间的适配代码,并可有效降低工作量和出错率。
参见图4,图4是本公开实施例提供的代码生成装置的结构图。如图4所示,代码生成装置400包括:第一获取模块401和第一生成模块402,其中:
第一获取模块401,用于获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;
第一生成模块402,用于根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述第一生成模块,包括:
第一生成单元,用于基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述第一生成模块,包括:
读取单元,用于分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;
第二生成单元,用于按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述读取单元具体用于:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
所述第二生成单元具体用于:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述装置还包括:
第二获取模块,用于所述获取语音功能文件之前,获取结构化数据唯一标识和其对应的语音指令;
存储模块,用于按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
可选的,所述装置还包括:
写入模块,用于所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
可选的,所述语音功能文件为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
可选的,所述语音功能文件为所述语音功能配置文件,所述装置还包括:
第二生成模块,用于所述获取语音功能文件之前,调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
代码生成装置400能够实现图1至图3的方法实施例的代码生成方法的各个过程,并达到相同的效果为避免重复,这里不再赘述。
本公开实施例的代码生成装置400,第一获取模块401,用于获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;第一生成模块402,用于根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。从而可以基于语音功能文件中结构化数据唯一标识和语音指令之间的对应关系,自动生成结构化数据唯一标识和所述语音指令之间的适配代码,相比于人工生成语音功能的结构化数据唯一标识和语音指令之间的适配代码,效率较高且可以减小出错概率。
本公开实施例还提供一种代码生成装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一方法实施例的代码生成方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本公开实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的代码生成方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
参见图5,图5是本公开实施提供的代码生成装置的结构图,如图5所示,代码生成装置500包括:处理器501、存储器502及存储在所述存储器502上并可在所述处理器上运行的计算机程序,代码生成装置500中的各个组件通过总线接口503耦合在一起,所述计算机程序被所述处理器501执行时实现如下步骤:
获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;
根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述计算机程序被所述处理器501执行时还用于:
基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
可选的,所述计算机程序被所述处理器501执行时还用于:
分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;
按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述计算机程序被所述处理器501执行时还用于:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
相应的,所述计算机程序被所述处理器501执行时还用于:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
可选的,所述计算机程序被所述处理器501执行时还用于:
所述获取语音功能文件之前,获取结构化数据唯一标识和其对应的语音指令;
按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
可选的,所述计算机程序被所述处理器501执行时还用于:
所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
可选的,所述语音功能文件为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
可选的,所述计算机程序被所述处理器501执行时还用于:
所述语音功能文件为所述语音功能配置文件,所述获取语音功能文件之前,调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本公开实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种代码生成方法,其特征在于,包括:
获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;
根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,包括:分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码,包括:
基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
3.根据权利要求1所述的方法,其特征在于,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令,包括:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码,包括:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
4.根据权利要求3所述的方法,其特征在于,所述获取语音功能文件之前,所述方法还包括:
获取结构化数据唯一标识和其对应的语音指令;
按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
5.根据权利要求1所述的方法,其特征在于,所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,所述方法还包括:
将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
6.根据权利要求1所述的方法,其特征在于,所述语音功能文件为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
7.根据权利要求6所述的方法,其特征在于,所述语音功能文件为所述语音功能配置文件,所述获取语音功能文件之前,所述方法还包括:
调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
8.一种代码生成装置,其特征在于,包括:
第一获取模块,用于获取语音功能文件,其中,所述语音功能文件包括结构化数据唯一标识和语音指令,所述结构化数据唯一标识和所述语音指令之间存在对应关系;
第一生成模块,用于根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码;
所述第一生成模块,包括:
读取单元,用于分别读取所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令;
第二生成单元,用于按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码。
9.根据权利要求8所述的装置,其特征在于,所述第一生成模块,包括:
第一生成单元,用于基于注解处理工具APT,根据所述语音功能文件,生成所述结构化数据唯一标识和所述语音指令之间的适配代码。
10.根据权利要求8所述的装置,其特征在于,所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令均按照预设格式存储;
所述读取单元具体用于:
分别读取所述语音功能文件中按照预设格式存储的每个数据内容;
分别对所述每个数据内容进行分割,得到所述每个数据内容中的结构化数据唯一标识和其对应的语音指令;
所述第二生成单元具体用于:
按照预设代码格式,分别生成所述每个数据内容中的结构化数据唯一标识和其对应的语音指令之间的适配代码。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于所述获取语音功能文件之前,获取结构化数据唯一标识和其对应的语音指令;
存储模块,用于按照预设格式,将所述结构化数据唯一标识和其对应的语音指令存储于语音功能文件中。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
写入模块,用于所述按照预设代码格式,分别生成所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码之后,将所述语音功能文件中的每个结构化数据唯一标识和其对应的语音指令之间的适配代码写入源文件中。
13.根据权利要求8所述的装置,其特征在于,所述语音功能文件为语音功能列表,或者语音功能配置文件;
其中,所述语音功能列表中的每一项均包括结构化数据唯一标识以及其对应的语音指令,所述语音功能配置文件中每一行均包括结构化数据唯一标识以及其对应的语音指令,且所述结构化数据唯一标识以及其对应的语音指令之间通过预设符号分隔。
14.根据权利要求13所述的装置,其特征在于,所述语音功能文件为所述语音功能配置文件,所述装置还包括:
第二生成模块,用于所述获取语音功能文件之前,调用预设脚本程序解析语音功能列表,并生成语音功能配置文件。
15.一种代码生成装置,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的代码生成方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811294064.1A CN109509467B (zh) | 2018-11-01 | 2018-11-01 | 代码生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811294064.1A CN109509467B (zh) | 2018-11-01 | 2018-11-01 | 代码生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109509467A CN109509467A (zh) | 2019-03-22 |
CN109509467B true CN109509467B (zh) | 2022-06-24 |
Family
ID=65747369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811294064.1A Active CN109509467B (zh) | 2018-11-01 | 2018-11-01 | 代码生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109509467B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947431B (zh) * | 2019-03-28 | 2022-09-16 | 北京字节跳动网络技术有限公司 | 一种代码生成方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090209275A1 (en) * | 2008-02-14 | 2009-08-20 | Moraes Ian M | Message robot |
CN102289375A (zh) * | 2011-09-02 | 2011-12-21 | 中兴通讯股份有限公司 | 代码生成方法及系统 |
CN102541521A (zh) * | 2010-12-17 | 2012-07-04 | 中国银联股份有限公司 | 基于结构化查询语言的操作指令自动生成装置及方法 |
CN104575499A (zh) * | 2013-10-09 | 2015-04-29 | 携程计算机技术(上海)有限公司 | 移动终端的声控方法及移动终端 |
CN106354492A (zh) * | 2016-08-23 | 2017-01-25 | 深圳Tcl智能家庭科技有限公司 | 一种快速调整交易流程对接的自动化代码生成方法及系统 |
-
2018
- 2018-11-01 CN CN201811294064.1A patent/CN109509467B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090209275A1 (en) * | 2008-02-14 | 2009-08-20 | Moraes Ian M | Message robot |
CN102541521A (zh) * | 2010-12-17 | 2012-07-04 | 中国银联股份有限公司 | 基于结构化查询语言的操作指令自动生成装置及方法 |
CN102289375A (zh) * | 2011-09-02 | 2011-12-21 | 中兴通讯股份有限公司 | 代码生成方法及系统 |
CN104575499A (zh) * | 2013-10-09 | 2015-04-29 | 携程计算机技术(上海)有限公司 | 移动终端的声控方法及移动终端 |
CN106354492A (zh) * | 2016-08-23 | 2017-01-25 | 深圳Tcl智能家庭科技有限公司 | 一种快速调整交易流程对接的自动化代码生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109509467A (zh) | 2019-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090437B (zh) | 应用部署方法、装置及计算机可读存储介质 | |
CN104731589A (zh) | 用户界面的自动生成方法及自动生成装置 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
CN106055375B (zh) | 应用程序安装方法及装置 | |
CN109739524B (zh) | 一种软件安装包的生成方法、装置、电子设备及存储介质 | |
CN109062572B (zh) | 一种组件调用方法、装置、设备及存储介质 | |
CN111061489B (zh) | 一种多平台编译检测方法、装置、设备及介质 | |
CN112615758B (zh) | 一种应用识别方法、装置、设备及存储介质 | |
CN113961196A (zh) | 一种自动生成代码方法、装置、设备及可读存储介质 | |
CN114090671A (zh) | 数据导入方法、装置、电子设备及存储介质 | |
CN110688315A (zh) | 接口代码检测报告生成方法、电子装置及存储介质 | |
CN109509467B (zh) | 代码生成方法及装置 | |
CN104063306A (zh) | 智能终端软件测试中的自动登录方法、装置和系统 | |
CN110737588A (zh) | 一种自动埋点的方法、装置、介质和电子设备 | |
CN112287643B (zh) | 消息监听方法、装置、设备及计算机可读存储介质 | |
CN111273913B (zh) | 一种输出规范表示的应用程序接口数据的方法及装置 | |
CN114661298A (zh) | 公共方法自动生成方法、系统、设备及介质 | |
CN111258586B (zh) | 快应用运行、编译方法、装置、电子设备和存储介质 | |
CN112947938B (zh) | 一种文件转化方法、装置、电子设备及存储介质 | |
CN109144500B (zh) | 一种基于图形化编程的皮肤文件处理方法及电子设备 | |
CN117234486A (zh) | 接口定义文件生成方法、装置、设备及存储介质 | |
CN111857678A (zh) | 代码生成方法、装置、电子设备及计算机存储介质 | |
CN115687268A (zh) | 一种工程文件生成方法及装置、存储介质、计算机设备 | |
CN115408074A (zh) | 接口数据的处理方法、装置、设备、介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |