大数据技术在会计与财务中的应用 课件 第6章 音视频分析技术_第1页
大数据技术在会计与财务中的应用 课件 第6章 音视频分析技术_第2页
大数据技术在会计与财务中的应用 课件 第6章 音视频分析技术_第3页
大数据技术在会计与财务中的应用 课件 第6章 音视频分析技术_第4页
大数据技术在会计与财务中的应用 课件 第6章 音视频分析技术_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据技术在会计与财务中的应用2026/9/7《大数据技术在会计与财务中的应用》配套课件第6章·6.1音频数据获取与转换目录6.1.1音频数据获取6.1.2音频数据转换6.1音频数据获取与转换6.1音频数据获取与转换|02/17音频数据获取与图片数据不同,互联网网页很少有单独存在的音频格式文件,因而音频文件的获取往往不采用爬虫的方法,而是直接从视频文件中剥离出来,具体方法如下。(1)引入moviepy库。importmoviepy.editorasmp(2)读入视频数据,将该视频文件的音频数据储存在my_audio变量中,并运用write_audiofile函数将语音文件另存为wav格式文件(当然也可以保存为wav格式文件)。my_clip=mp.VideoFileClip(‘1.mp4’)my_audio=my_clip.audiomy_audio.write_audiofile(‘1.wav’)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|03/17音频数据转换在计算机“耳”中,音频文件又是如何表达的呢?我们首先思考一下人耳对声音信号的接受过程。物理课告诉我们,我们之所以能够听到声音,是因为声源发生振动,这种振动通过介质到达我们的耳膜,进而引起耳膜的振动,这种振动信号被大脑进一步加工处理,才会被我们的意识真正“听到”,换句话说,所有声音都可以被表示为振动,即“波”的形式。对于计算机来说亦是如此。计算机记录声音文件的过程,就是将振动波形按照一定的采样率转换为二进制数值,即按照一定的速度,将每一帧对应的点转换为二进制数值。这样一来,所有点连起来就组成了一段完整的波形图,也就是一段音频。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|04/17绘制波形图我们可以绘制某段音频的波形图。这里载入的librosa库是音频处理中一个常用的Python库。第二行代码通过load函数将一个音频格式文件读入到Python中,其中第一个参数是文件路径,第二个参数是采样率,获取的音频数据储存在signal变量中,采样率则存储在sr变量中。该函数的返回结果有两个,因此在等式左侧必须有两个变量名称。importlibrosasignal,sr=librosa.load("1.wav",sr=16000)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|05/17绘制波形图另外,librosa的display方法依赖matplotlib库,因此首先需要导入matplotlib,并行简单的画布尺寸设置,便可以通过waveplot函数绘制该段音频的波形图。importmatplotlib.pyplotaspltimportlibrosa.displayplt.figure(figsize=(14,5))librosa.display.waveplot(signal,sr=sr)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|06/17读取音频属性接下来,我们可以借助另外一个音频处理库wave获取某段音频的基本属性,wave库的打开文件函数为open。(1)导入库并打开文件。importwavewavFile="1.wav"f=wave.open(wavFile)(2)获取f变量,并对这个对象使用getparams方法,打印输出结果。params=f.getparams()print("音频头参数:",params)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|07/17读取音频属性(3)我们也可以单独获取其中的每一个参数。Channels=f.getnchannels()Channels=f.getnchannels()SampleRate=f.getframerate()bit_type=f.getsampwidth()*8frames=f.getnframes()#Duration也就是音频时长=采样点数/采样率Duration=wav_time=frames/float(SampleRate)#单位为s2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|08/17读取音频属性(4)分别打印输出单个参数。print("通道数(Channels):",Channels)print("采样率(SampleRate):",SampleRate)print("采样位数(Precision):",bit_type)print("采样点数(frames):",frames)print("时间(Duration):",Duration)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|09/17读取音频属性通道数指的是声音的通道的数目,通常有单声道和立体声两种。单声道的声音只能使用一个喇叭发声(或者是两个喇叭输出同一个声道的声音),立体声可以两个喇叭同时发声,有更丰富的空间感。当然,还有更多通道数的音频格式。从数据大小来看,双声道的文件是单声道文件的两倍。采样率指每秒钟取得声音样本的次数。采样频率越高,声音的质量越好,声音的还原更加真实,但同时占用的资源也更多。由于人耳的分辨率很有限,无法分辨过高的频率,因此22050Hz的采样频率已足够使用,44100Hz被视为CD音质,而超过48000Hz或96000Hz的采样率对人耳几乎没有意义,这与电影每秒24帧图片的道理类似。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|10/17重采样在认识了音频的基本属性后,我们可以通过一些函数对这些属性进行修改,并另存为一份新的文件,这往往是某些复杂任务中必须进行的操作,因而非常重要。(1)ffmpy3库是重要的音频处理库,后续视频分析中我们还会用到它。fromffmpy3importFFmpeg(2)设置好待处理文件的路径和目标新文件的路径。audio_path_src=r'1.wav'audio_path_dst=r'1_resample.wav'2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|11/17重采样(3)整体操作上,我们将构建一个cmd语句。具体来说,我们先建立一个FFmpeg对象,其中包含两个字典,一个输入字典inputs,该字典的键是输入文件路径;另一个是输出字典outputs,键是输出文件路径,值则是我们希望设置的文件属性。例如,代码中‘pcm_s16le’,代表我们希望输出的文件是16位格式(此处未作修改,因为这个文件本身就是16位);ac后的1代表我们将通道数设置为1(原文件通道数为2);ar后的16000代表着我们希望新文件采样率为16000。最后,利用run方法执行这一cmd命令。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|12/17重采样ff=FFmpeg(inputs={audio_path_src:None},outputs={audio_path_dst:['-acodec','pcm_s16le','-ac','1','-ar','16000']})#将other格式文件转化为‘pcm-16位float、1通道、16000Hz采样率的wav文件'ff.run()2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|13/17音频截取当我们只想保留音频的某一部分时,还可以对音频进行截取操作。(1)导入pydub。pydub是一个功能强大的音频处理库(之所以介绍很多外部库,是想为读者提供更多实现的途径)。上文重采样的很多处理也可以通过pydub提供的函数实现。frompydubimportAudioSegment(2)读入文件,文件也可以使用from_file方法读取,但需要额外传入格式参数。song=AudioSegment.from_wav('1.wav')(3)然后直接使用切片对该音频进行截取。需要注意,这里的文件数据以毫秒为单位,因此,如果要截取开头到第50秒的音频,应表示为[:50×1000]。song=song[:50*1000]2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|14/17音频截取(4)最后输出文件,这里建议声明format参数,不然可能报错。song.export('1_new.wav',format='wav')(5)观察新文件的各项参数,可以发现音频长度变为50秒,其它参数并未改变。音频头参数:_wave_params(nchannels=2,sampwidth=2,framerate=44100,nframes=2205000,comptype='NONE',compname='notcompressed')通道数(Channels):2采样率(SampleRate):44100采样位数(Precision):16采样点数(frames):2205000帧数或者时间(Duration):50.02026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|15/17音频格式转换在某些任务中,不同的文件格式可能存在不兼容的问题。因此,我们需要掌握不同文件格式之间转换的方法。from

pydubimportAudioSegmentsong=AudioSegment.from_wav('1.wav')song.export('1_new.mp3',format='mp3')转换方法非常简单,就是利用上述的AudioSegment模块,在导出时通过format参数,将文件设置为想要的格式。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.1音频数据获取与转换|16/172026/9/7《大数据技术在会计与财务中的应用》配套课件谢谢观赏!6.1音频数据获取与转换|17/17大数据技术在会计与财务中的应用作者:张敏等2026/9/7《大数据技术在会计与财务中的应用》配套课件第6章·6.2音频分析技术与算法目录6.2.1时域声学特征6.2.2频域声学特征6.2.3机器学习特征6.2音频分析技术与算法6.2音频分析技术与算法|02/47音频分析技术与算法上文提到,在计算机“耳”中,音频文件就是一段波形图,而区分不同声音的关键特征在于这个“波”的各种特征。因此,与图片数据类似,音频数据的分析重点在于对音频特征的提取,这其中包括传统特征提取方法和基于机器学习的方法。不同的是,在图片分析中,传统算法提取的特征很少直接应用于指标构建,通常需要与机器学习算法结合使用。这是因为,这些底层特征难以直接提供有效信息,因此无法直接应用于指标构建。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|03/47音频分析技术与算法而在音频相关研究中,传统算法提取的某些声学特征则可以直接用于描述音频文件的信息,而无需结合机器学习算法。例如,Throckmorton等(2015)直接将高管音频的Pitch(音高)、Jitter和Shimmer(声音质量,能够体现支支吾吾的特点)和其他频谱特征作为输入,进而预测财务舞弊。虽然该研究也使用了机器学习算法,但其作用并非提取音频数据的特征,而是替代传统计量方法进行舞弊预测。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|04/47时域声学特征音频的表现形式是振动幅度关于时间的函数图像,即“波形图”,因此最基础的一些声学特征可以直接根据这个以时间为x轴的波形图计算得出。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|05/47短时平均过零率(1)首先,引入所需的pyAudioAnalysis库,同时引入Plotly和IPython等库,用于相关特征的绘制。from

pyAudioAnalysisimportShortTermFeaturesasaFfrompyAudioAnalysisimportaudioBasicIOasaIOimportnumpyasnpimportplotly.graph_objsasgoimportplotlyimportIPython(2)读取文件,以下提供一种新的读取文件方式。#fs采样率,即每秒取16000个样本,s是指你的音频文件总的样本数fs,s=aIO.read_audio_file("1_resample.wav")2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|06/47短时平均过零率(3)接下来的两行代码是关键。首先,我们需要明晰,声学特征根据窗口期大小可以分为短时、中时声学特征,即在原采样率的基础上,我们选择多少个样本点计算一次过零率。读者可以将这个窗口期理解为图片特征提取中的卷积核,或者是传统特征描述子的“局部”窗口,它们在逻辑上是相似的。从我们引入的ShortTermFeatures库名称就可以看出,这里我们选择较小的窗口期。一般来说,短时窗口的默认值为0.025秒,相邻短时的默认间隔为0.01秒。win,step=0.050,0.050[f,fn]=aF.feature_extraction(s,fs,int(fs*win),int(fs*step))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|07/47短时平均过零率接下来我们绘制过零率可视化图像。代码的第一行为生成时间变量,也就是横轴。第二行提取出f变量中过零率对应的数组,提取方式是首先通过fn.index(‘zcr’)的方式获取过零率(zcr)的顺序索引,然后用该索引从f变量中提取相应的数据。第三行初始化一个可视化对象并设置坐标轴标题。第四行传入x和y变量,结果如图6-4所示。time=np.arange(0,duration-step,win)zcr=f[fn.index('zcr'),:]mylayout=go.Layout(yaxis=dict(title="framezero-crossingrate"),xaxis=dict(title="time(sec)"))plotly.offline.iplot(go.Figure(data=[go.Scatter(x=time,y=zcr)],layout=mylayout))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|08/47短时平均过零率2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|09/47短时平均过零率2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|10/47短时能量短时能量指一定窗口时间内,每帧采样点振幅的平方和。其主要用于区分浊音段和清音段,因为浊音时E(i)值比清音时大得多。此外,短时能量还可以用区分声母与韵母的分界,以及无话段与有话段分界。其计算公式如下:式中,L是分帧后每一窗口内所含样本数,与过零率中的窗口概念相同,i指第i帧,y指的是该点的数值(振幅)。2026/9/7《大数据技术在会计与财务中的应用》配套课件

6.2音频分析技术与算法|11/47短时能量由于其代码实现过程与过零率的计算类似,我们直接更换可视化部分代码,结果如图6-6所示。我们同样重点关注0-3秒的部分图像,如图6-7所示。time=np.arange(0,duration-step,win)energy=f[fn.index('energy'),:]mylayout=go.Layout(yaxis=dict(title="frameenergyvalue"),xaxis=dict(title="time(sec)"))plotly.offline.iplot(go.Figure(data=[go.Scatter(x=time,y=energy)],layout=mylayout))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|12/47能量熵相比能量,能量熵在音频任务中的应用更加广泛。熵即混乱程度,能量熵指的是对应帧能量的混乱程度。通过上述代码可以直接获得。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|13/47频域声学特征介绍频域声学特征之前,我们先简单了解一下傅里叶变换(级数)。截止上一部分,我们对音频的分析主要是基于时序数据进行的,换句话说,我们计算的基础都是一个以时间为x轴的波形图。然而,语音信号有一个显著的特点,也是所有波共同具备的特征,那就是任何一个波都可以被表示为若干个正弦曲线的叠加。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|14/47MFCC在语音识别和话者识别方面,最常用到的频域语音特征就是梅尔倒谱系数(Mel-scaleFrequencyCepstralCoefficients,简称MFCC)。MFCC提取过程包括预处理(预先加重、分帧、加窗)、(快速)傅里叶变换、Mel滤波器组、对数运算、离散余弦变换以及动态特征提取等步骤。MFCC算法的实现过程较复杂,尤其是其中的傅里叶变换等步骤。教材将重点介绍其中的Mel滤波器组,帮助读者初步了解该特征所表达的信息。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|15/47MFCC梅尔值是一个新的量度,相比于正常的频率机制,梅尔值更加接近于人耳的听觉机制,其在低频范围内增长速度很快,但在高频范围内的增长速度很慢。每一个频率值都对应着一个梅尔值,其对应关系如下:所以,这一步骤可以将上一步通过傅里叶变换得到的频谱图,转换为适应人耳的频率信号。关于该算法的具体细节,教材限于篇幅不再展开。最终,我们可以提取三组MFCC特征,每组包含10至20个子特征。同样地,我们可以通过pyAudioAnalysis进行计算并获取。这里介绍一种利用librosa库的实现方法,步骤如下。2026/9/7《大数据技术在会计与财务中的应用》配套课件

6.2音频分析技术与算法|16/47MFCC(1)首先读取文件。importlibrosax,sr=librosa.load("1_resample.wav",sr=16000)(2)利用mfcc函数计算,将结果储存在mfccs变量中,并进行可视化展示。importmatplotlib.pyplotaspltimportlibrosa.displaymfccs=librosa.feature.mfcc(x,sr=sr)librosa.display.specshow(mfccs,sr=sr,x_axis=‘time’)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|17/47频谱中心频谱中心又称为频谱一阶距。频谱中心的值越小,表明频谱能量越集中于低频范围。time=np.arange(0,duration-step,win)spec_cen=f[fn.index('spectral_centroid'),:]mylayout=go.Layout(yaxis=dict(title="framespectral_centroid"),xaxis=dict(title="time(sec)"))plotly.offline.iplot(go.Figure(data=[go.Scatter(x=time,y=spec_cen)],layout=mylayout)) 2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|18/47韵律特征此外,一些基于频谱的特征在语音识别中被广泛应用,比如Pitch(音高)、Jitter和Shimmer(声音质量,能够体现说话支支吾吾的特点)、Loudness(响度)和Chroma(色彩特征,如区分不同音乐流派、音色等)等。在财会研究中,这些特征也具有一定的研究价值。(1)此处,我们介绍一个强大的音频特征提取库opensmile库,该库可以直接引入几大前沿的音频特征集,并对文件进行特征提取。importopensmileimportpandasaspd2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|19/47韵律特征(2)建立一个Smile对象,进行初步设置,这里我们选择eGeMAPS特征集,可供选择的还有GeMAPS、emobase和ComParE特征集。这些特征集在多种音频相关竞赛中获奖,已经十分成熟。它们包含了我们之前提到能量特征、过零率、MFCC以及其他频谱特征,以及许多能提供丰富信息的其他特征,例如,eGeMAPS在文件层面就可以提取88个特征。除了对特征集进行设置,我们还可以对特征水平进行设置,例如LowLevelDescripotors是一些低水平或低维度的特征,这些特征往往建立在分窗基础之上,即在每一个小窗口内计算一次特征。smile=opensmile.Smile(feature_set=opensmile.FeatureSet.eGeMAPSv02,feature_level=opensmile.FeatureLevel.LowLevelDescriptors,)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|20/47韵律特征(3)使用process_file方法,便可根据之前设置的特征集和特征水平对文件进行计算,输出的结果可以转成DataFrame并另存为一个文件中,我们直接打印data_m观察这些低水平特征。y=cess_file('1.wav')data_m=pd.DataFrame(y)data_m.to_csv('test_data.csv',sep=',')2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|21/47韵律特征(4)我们也可以将feature_level设置为Functional来获取高集成水平的特征。这些特征的计算方法本质上是对低水平特征在所有帧上的统计,如分位数统计、均值统计和标准差统计等,因而特征数量较多,打印data_m,结果如图6-14所示。smile=opensmile.Smile(feature_set=opensmile.FeatureSet.eGeMAPSv02,feature_level=opensmile.FeatureLevel.Functionals,)y=cess_file('1.wav')data_m=pd.DataFrame(y)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|22/47机器学习特征在实际中,用于进一步提取深度特征的机器学习算法种类繁多,既包括教材第3章介绍的各种经典模型,如SVM、决策树、神经网络等,也包括专门用于语音这类时间序列数据的深度神经网络,甚至上一节中专门用于处理图像数据的CNN也被开发出多种变体,应用于音频数据处理。此外,近些年涌现出许多新型算法,如CTC、Viterbi、Attention等等。限于教材篇幅及目的,本书无法一一展开,这里主要介绍具有代表性的一类深度学习模型——循环神经网络(RNN)与长短期记忆网络(LSTM)。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|23/47RNN(循环神经网络)传统的神经网络中,各个神经元之间是彼此独立且平等的。在一般的数据分析中,这种方法是可以理解的。神经网络的结构特点使之能够挖掘输入变量之间的非线性关系。然而,对于某些具时间序列信息的数据,如文本数据(前后文呼应),股票行情数据(前后存在时序关系),以及本部分重点关注的音频数据(以一帧帧数据为形式),传统神经网络无法准确提取它们的时序信息。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|24/47RNN(循环神经网络)为了方便理解,我们可以这样思考:对于传统的财务指标数据,我们打乱财务指标的披露顺序,实际上并不会改变一张财务报告所包含的信息(只会影响观感)。然而,对于音频数据,如果我们打乱每一帧的顺序,在传统神经网络眼中并不会有什么差异,但事实上,数据却已经截然不同了。换句话说,传统神经网络模型并不能学习到输入特征之间的时序特征。于是,循环神经网络应运而生。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|25/47RNN(循环神经网络)为了应对建模的序列问题,RNN引入了隐状态h(hiddenstate)的概念,h可以提取序列型数据的特征,进而转换为输出。这张图中的x1,x2,x3和x4可以理解为按照时间顺序排列的四个向量,分别对应四帧,每一个向量是一个13维的MFCC特征。h0是我们初始化的一个“基础状态”,h1的计算方式与传统神经元的计算类似,唯一区别在于自变量多了一个h0项。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|26/47RNN(循环神经网络)而后,每一个隐状态的计算结果都不仅取决于对应的输入,还取决于前一个隐状态ht-1,如图6-16所示:2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|27/47RNN(循环神经网络)至于输出y,只需对对应的隐状态应用一个softmax函数即可,如图6-17所示。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|28/47RNN(循环神经网络)至此,一个简单的RNN模型就形成了。RNN与传统网络的主要区别就是隐态h考虑了输入特征之间的时序关系。具体来说,每一个隐态都会考虑之前的所有输入,而对其后的所有输入都不予考虑。然而,RNN也存在着一个显著缺陷,那就是它比较“健忘”。经过很多隐态的计算之后,较靠后的隐态可能会忽视早期输入的影响。也就是说,RNN模型在设计上只考虑了对之前信息的吸收,但并没有考虑哪些信息应该着重“记忆”,而哪些信息应该“忘记”。长短期记忆网络(LSTM),很好地解决了这个问题。当然,在介绍LSTM之前,我们先给出RNN的代码实现。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|29/47RNN(循环神经网络)(1)简单RNN的关键是RNN网络层,可以直接通过keras库调用。fromkerasimportSequentialfromkeras.layersimportSimpleRNN(2)在模型中加入一个简单的RNN层。第一个参数units取3,指每个隐态向量的长度,也是输出层每个向量的长度(RNN的特点是输入与输出序列长度相同),input_shape为(None,4),代表输入是一个长度为4的特征序列,且每个特征向量的长度不做规定。Activation为激活函数。model=Sequential()model.add(SimpleRNN(units=3,input_shape=(None,4),activation='relu'))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|30/47RNN(循环神经网络)(3)我们可以观察这个模型的结构,如图6-18所示。model.summary()2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|31/47LSTM(长短期记忆网络)LSTM在结构上和简单RNN并没有较大的差异,只是它们用了不同的函数计算隐状态。为方便理解,我们将上一部分中的图画大一点,如图6-19所示。RNN本质上是对xt和ht-1进行一个简单tanh计算,并输出为ht(至于ht到yt的计算过程非常简单,可以省略)。而LSTM是将这一个计算过程变得复杂了一些,所以,LSTM也可以视为RNN的一种特殊形式。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|32/47LSTM(长短期记忆网络)这个计算过程是怎么变复杂的呢?图6-20给出了LSTM的标准形式,绿色的方框即LSTM的“记忆”,我们称之为细胞(cells),这个细胞内的计算主要包含一个细胞状态和三个“门”——遗忘门、记忆(输入)门和输出门。顾名思义,遗忘门用来决定哪些信息需要忘记,记忆(输入)门用来决定哪些信息需要纳入考虑(加入记忆),输出门用来获得当前状态的输出。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|33/47LSTM(长短期记忆网络)图6-21着重体现的是细胞状态,它是贯穿整个LSTM网络的核心,其本质上是一个不断变换的向量。从图中可以看出,从上一个细胞到下一个细胞经历了两次更新,这与接下来三个门的计算密切相关。可以说,LSTM通过这些门实现对记忆的携带和更新。它携带着第一个特征(第一帧语音)的信息,每一帧都会经历更新,并参与每一帧输出的计算,从而将每一帧的信息都带给了其后的每一帧。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|34/47LSTM(长短期记忆网络)在LSTM中,第一步是决定从细胞状态中丢弃哪些信息。这个决定通过一个称为“遗忘门”的结构完成。遗忘门会读取上一个输出和当前输入,进行Sigmoid非线性映射,然后输出一个向量(该向量每一个维度的值都在0到1之间,1表示完全保留,0表示完全舍弃,相当于记住了重要信息,忘记了无关信息)。然后,这个输出向量与细胞状态相乘,其计算过程如图6-22所示。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|35/47LSTM(长短期记忆网络)下一步是确定哪些新信息被存放在细胞状态中。这包含两个部分:第一,sigmoid层决定哪些值将被更新;第二,tanh层创建一个新的候选值向量,该向量将被加入到状态中。其中,Sigmoid函数的计算结果位于0到1之间,决定了输入信息的保留程度,可以被视为输入的重要性因子(这也是为什么两个函数的计算结果是相乘而不是相加);而tanh函数的计算结果位于-1到1之间,用来对输入信息进行中心化,代表着输入信息本身。最后,二者相乘的结果能够对输入信息进行选择。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|36/47LSTM(长短期记忆网络)接下来是更新旧细胞的状态,即将ct-1更新为ct。整个更新过程分为两步,如图6-24所示。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|37/47LSTM(长短期记忆网络)最终,我们需要确定输出的值。这个输出将基于细胞状态,但会经过过滤。首先,我们通过sigmoid层来决定是否输出当前输入和上一个状态的信息。然后,我们将细胞状态通过tanh函数处理,得到一个值在-1到1之间的结果,并与sigmoid门的输出相乘。最终,我们只输出经过筛选后的部分信息。该过程如图6-25所示。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|38/47LSTM(长短期记忆网络)LSTM层也可以通过sklearn库调用。fromkerasimportSequentialfromkeras.layersimportLSTMmodel=Sequential()model.add(LSTM(3,input_shape=(5,4),activation='relu'))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|39/47基于LSTM的语音训练实战我们下述任务为例:根据已经标注好的语音数据集(包含四种情绪,每种情绪对应60-120个不等的非平衡标签音频文件),训练一个基于LSTM的语音情绪识别模型。(1)读入数据并提取基本频谱特征。依据惯例选取MFCC特征,具体而言,选择39个特征,即前文提到的三组MFCC特征。importosmfcc_len=39(2)对类别标签进行设置,分别对应四个标签。mean_signal_length=32000flatten=boolclass_labels=("Neutral","Angry","Happy","Sad")2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|40/47基于LSTM的语音训练实战(3)初始化数据与标签列表,用来存储数据。data=[]labels=[]names=[]2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|41/47基于LSTM的语音训练实战(4)该循环内,我们会遍历每一个文件夹的每一个文件,并调用提前写好的get_feature_vector_from_mfcc函数提取mfcc特征。fori,directoryinenumerate(class_labels):forfilenameinos.listdir('speechemodataset/'+directory):filepath='speechemodataset/'+directory+'/'+filenamefeature_vector=get_feature_vector_from_mfcc(file_path=filepath,mfcc_len=mfcc_len,flatten=None)data.append(feature_vector)labels.append(i)names.append(filename)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|42/47基于LSTM的语音训练实战(5)获取音频文件数据和标签数据,有339个文件,每个文件被分为198帧,每一帧有39个特征。data=np.array(data)labels=np.array(labels)(6)将数据随机划分为训练集、测试集,划分比例为20-80。fromsklearn.model_selectionimporttrain_test_splitx_train,x_test,y_train,y_test=train_test_split(data,labels,test_size=0.2,random_state=42)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|43/47基于LSTM的语音训练实战(7)对标签变量进行独热编码。fromkeras.utilsimportto_categoricaly_train=to_categorical(y_train)y_test=to_categorical(y_test)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|44/47基于LSTM的语音训练实战(8)构建模型,整体思路在前文已经提及,此处读者朋友也不妨尝试手动搭建。需要注意的是,LSTM函数的输入格式相对特殊,一般是以帧数×特征维数的形式传入数据。得到的模型构造如图6-26所示。fromkerasimportSequentialfromkeras.layersimportDense,Dropout,LSTMmodel=Sequential()model.add(LSTM(128,input_shape=x_train[0].shape,activation='relu'))model.add(Dropout(0.5))model.add(Dense(32,activation='relu'))model.add(Dense(16,activation='tanh'))model.add(Dense(4,activation='softmax'))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|45/47基于LSTM的语音训练实战(9)对模型进行编译。pile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])(10)开始训练,我们将batch_size设定为32,训练50个epoch。model.fit(x_train,y_train,batch_size=32,epochs=50)(11)在测试集上评估模型的效果,如图6-26所示。score=model.evaluate(x_test,y_test)print('testscore:',score[0])print('testaccuracy:',score[1])准确度只有0.1029,读者可以思考为什么表现不及预期,也可以根据教材的其他章节内容对该任务进行改进。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.2音频分析技术与算法|46/472026/9/7《大数据技术在会计与财务中的应用》配套课件谢谢观赏!6.2音频分析技术与算法|47/47大数据技术在会计与财务中的应用作者:张敏等2026/9/7《大数据技术在会计与财务中的应用》配套课件第6章·6.3音频分析的实现路径目录6.3.1 特征级路径6.3.2任务级路径6.3音频分析的实现路径6.3音频分析的实现路径|02/08音频分析的实现路径从财务与会计领域现有的研究来看,与图像领域的“自力更生”和“部分借鉴”路径相比,音频领域尚未出现类似的研究路线。换句话说,目前的研究既没有在音频数据上自主搭建模型,也没有借助现有的模型进行迁移学习来进行分析,而只是借助某些声学软件或者预训练模型(没有fine-tune步骤)接口直接计算音频特征,并将这些特征用于进一步的舞弊预测或者实证检验中。实际上,6.2.3部分的语音情绪识别实战就是对应“自力更生”路径的一个例子,尽管其效果并不理想。当然,本书鼓励广大读者尝试这一路径并开展研究。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.3音频分析的实现路径|03/08特征级路径不少学者在早期的音频研究中,通过PRAAT声学软件,获取音频的Pitch(音高)、Shimmer、Jitter等特征,并用于音频分析。本书认为这种方式在效率上有待提高,因为该方法仍需要人工载入数据,并进行点击分析等操作。教材在6.2部分介绍的PyAudioAnalysis外部库能够实现批量文件的分析。此外,opensmile库可以轻松提取丰富的特征集,例如eGeMAPS等特征集包含了详细的统计特征。本书建议有志于该路径研究的学者掌握这些研究工具,以便更高效地进行音频特征的提取和分析。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.3音频分析的实现路径|04/08任务级路径pyAudioAnalysis库不仅可以实现特征提取,还内置了SVM、决策树、KNN等机器学习算法,支持模型训练。此外,库中还提供了arousal/valence(语音特征中非常重要的两个特征,已经被部分学者应用到财会领域研究中)的标签数据集,其中包含47个音频文件及其对应的两个标签文件。接下来,我们将演示如何利用该库进行模型训练与应用。如图6-27,两个标签文件分别记录了每个音频文件的对应特征数据。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.3音频分析的实现路径|05/08任务级路径(1)首先引入训练测试库,然后调用feature_extraction_train_regression函数,传入数据集参数、音频特征集和选用的模型,即可自动完成训练。from

pyAudioAnalysisimportaudioTrainTestasaTaT.feature_extraction_train_regression("speechEmotion/",1,1,aT.shortTermWindow,aT.shortTermStep,"svm","svmSpeechEmotion",False)(2)调用file_regression函数对新文件进行预测。frompyAudioAnalysisimportaudioTrainTestasaTr=aT.file_regression("1.wav","svmSpeechEmotion","svm")(3)获得的数值就是该文件对应的特征值。([0.5415760995153852,0.4896342873947259],[‘arousal’,’valence’)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.3音频分析的实现路径|06/08任务级路径其实,乍一看这一过程有点像“部分借鉴”路径,但细看就会发现,我们对模型进行训练时所应用的数据(训练集)完全是该模块预设好的。换句话说,数据集是一般性的,而非领域性的,我们并没有针对具体任务专门收集数据并进行标注,也自然就没有fine-tune步骤,只是重复了该模型的训练过程,并输出了特征。那么,是否可以在该模型的基础上用自己的领域数据进行微调呢?这正是学者根据研究问题可以考虑的方向。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.3音频分析的实现路径|07/082026/9/7《大数据技术在会计与财务中的应用》配套课件谢谢观赏!6.3音频分析的实现路径|08/08大数据技术在会计与财务中的应用作者:张敏等2026/9/7《大数据技术在会计与财务中的应用》配套课件第6章·6.4视频数据获取与转换目录6.4.1视频数据获取6.4.2视频数据转换6.4视频数据获取与转换6.4视频数据获取与转换|02/17视频数据获取与转换视频数据本质上是由图片的时序集合和音频组成,因此,视频包含的信息比单一的图片或者音频更加丰富。在分析时,可以分别从图片和音频两个角度进行处理,应用前文提及的技术分别进行处理。事实上,从技术角度来看,已有的视频研究很少脱离前文提及的研究范式。换句话说,这些研究与图片和音频研究的主要区别在于数据样本的格式上,而非技术方法。由于视频通常能与上市公司匹配,因而该类研究能在研究问题上取得创新。然而在技术上,这些研究很少挖掘视频数据相较于图片和音频数据的独特之处。例如,鲜有财会研究通过图片的时序特点,关注视频中研究对象的时序特征(动作变化等)。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|03/17视频数据获取在音频数据获取部分,我们提到音频数据不像图片数据那样可以直接从网页爬取,通常需要从视频文件中分离。因此,视频数据的获取尤为重要。事实上,视频数据在网页中的普遍性很高(类似图片数据),但是由于文件较大,爬取方法相对较复杂。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|04/17you-get爬取法这种方法利用了外部库you-get,该库能够下载多种格式的视频。例如,根据我们在爬虫章节中所学的知识,我们定位到如图6-28所示的视频文件。当然,这只是一个相对路径,我们可以对绝对域名进行拼接,获取其绝对路径。/vod/0025331012211.flv2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|05/17you-get爬取法接下来,我们使用you-get库,其使用方法与教材图片部分提及的ffmpeg方法类似。首先拼接一个cmd命令行,然后通过系统执行该命令。传入几个必要的参数:分别是you-get方法,视频文件的网址,-O用来设置文件名,-o用来设置保存的文件夹。最后,通过系统执行该命令行。command='you-get'+path+'-O'+filename+'-o'+foldernameos.system(command)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|06/17you-get爬取法我们可以将其封装为函数并调用,并注意文件夹要加斜杠。执行函数后,会发现cmd窗口中正在下载视频,图6-29展示了下载过程。defdownload_flv(path,foldername,filename):command='you-get'+path+'-O'+filename+'-o'+foldernameos.system(command)download_flv('/vod/0025331012211.flv','test/','1722')2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|07/17ffmpeg爬取法在某些情况下,我们可能无法在网页源代码中直接找到视频文件的路径(例如一个清晰明了的.flv文件),而是经过调试发现,视频文件往往与一个.m3u8文件同时出现。这其实是现在许多网站常采取的策略,即以“视频流”的方式加载网页上的视频文件,如图6-31所示。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|08/17ffmpeg爬取法我们下载这个.m3u8文件,发现其无法直接播放。用Notepad将之打开,会发现这个文件内部由一个个.ts文件组成。有时我们也可以直接在网页源代码中找到这些.ts文件。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|09/17ffmpeg爬取法那我们如何爬取这样的视频呢?难道要爬取每一个.ts文件并将其拼接起来吗?这样的做法是可行的,但是太耗费精力,这里介绍一种利用ffmpeg库进行下载的方法。该方法只需输入一个.m3u8文件,就可以自动进行视频解析和拼接,并返回一个完整的视频文件,具体代码写法与you-get相似。a=FFmpeg(inputs={m3u8:None},outputs={'test/'+filename+'.mp4':'-ccopy',})2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|10/17视频数据转换上文已经分别讲解过图片和音频的转换方法,视频处理实际上就是分别对这两种文件格式进行操作,所以此处不再重复,只简单介绍视频数据的读取、截取和保存等操作。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|11/17视频读取导入计算机视觉常用库cv2,用VideoCapture函数读取视频。importcv2video_capture=cv2.VideoCapture('test/1711.mp4')print('总帧数:'+str(video_capture.get(7)))2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|12/17属性读取与图片和音频类似,视频数据有一些独特的属性,如帧率、大小等。print('视频流帧的宽度为:'+str(video_capture.get(3)))print('视频流帧的高度为:'+str(video_capture.get(4)))print('视频流帧速率为:'+str(video_capture.get(5)))print('视频流帧数为:'+str(video_capture.get(7)))输出结果如下。视频流帧的宽度为:720.0视频流帧的高度为:576.0视频流帧速率为:50.0视频流帧数为:63600.0视频流亮度为:0.02026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|13/17视频截取与音频类似,我们可以对视频片段进行截取。步骤如下:(1)导入处理库subprocess。importsubprocess(2)调用call函数,并提供以下四个参数:file_name,即原视频文件路径;save_name,即新文件路径名;start_time,截取开始时间戳;以及lasts_time,持续时间段。subprocess.call('ffmpeg.exe-y-i'+file_name+'-ss'+start_time+'-to'+lasts_time+'-acodeccopy-vcodeccopy-async1'+save_name)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|14/17视频截取(3)将其封装为函数。defcutVideo():subprocess.call('ffmpeg.exe-y-i'+file_name+'-ss'+start_time+'-to'+lasts_time+'-acodeccopy-vcodeccopy-async1'+save_name)(4)设置参数后调用函数。start_time='00:03:00'#开始时间lasts_time='00:05:02'#截取多长时间file_name=r'test/1722.flv'save_name=r'test/1722_cut.flv'cutVideo(file_name,start_time,lasts_time,save_name)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|15/17格式转换在截取视频时,可以直接更改文件后缀,以调整文件格式。start_time='00:03:00'#开始时间lasts_time='00:05:02'#截取多长时间file_name=r'test/1722.flv'save_name=r'test/1722_cut.mp4'cutVideo(file_name,start_time,lasts_time,save_name)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.4视频数据获取与转换|16/172026/9/7《大数据技术在会计与财务中的应用》配套课件谢谢观赏!6.4视频数据获取与转换|17/17大数据技术在会计与财务中的应用作者:张敏等2026/9/7《大数据技术在会计与财务中的应用》配套课件第6章·6.5视频分析技术与算法目录6.5.13DCNN6.5.2CNN-RNN6.5.3多模态架构6.5视频分析技术与算法6.5视频分析技术与算法|02/10视频分析技术与算法在计算机视觉领域,视频数据的分析算法主要集中在挖掘时序特征方面,还有一些算法采取多模态的思路,综合考虑音频数据所蕴含的信息。这些算法仍处于尝试和试验阶段,远不如上文提到的CNN和RNN体系那样完整。教材将尽可能全面地介绍这些算法。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|03/103DCNN在5.3.2部分,我们详细讲解了卷积神经网络(CNN),其中提到CNN被称作2D(Dimension)-CNN,即二维卷积。二维卷积是在单通道的图像上进行滑窗操作,其输入是高度H、宽度为W的二维矩阵。而三维卷积在此基础上增加了深度C这一维度(可以理解为时间维度),其输入是高度H、宽度W和深度C的三维矩阵。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|04/103DCNN3DCNN通过在二维卷积的基础上对相邻几张图片进行卷积,从而实现对视频时序特征的捕捉。图6-40展示了在视频数据上应用3DCNN识别打斗场面的成果(Shanmughapriya等,2022)。图中准确识别了打斗场面的位置,并给出了较高的置信率,可见该模型效果较好,该模型可以应用在公共场合进行预警,有很强的实用价值。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|05/103DCNN下面我们简单给出3DCNN的代码实现过程。keras库提供了三维卷积层的对应对象,其中,kernel_size和strides都是三维数组(或是单一数字,表示三个数字相同)。与二维卷积层相比,这里数组多了一个维度,即表示深度方向的卷积核,其他参数与Conv2D对象类似。keras.layers.convolutional.Conv3D(filters,kernel_size,strides=(1,1,1),padding='valid',data_format=None,dilation_rate=(1,1,1),activation=None,use_bias=True,kernel_initializer='glorot_uniform',bias_initializer='zeros',kernel_regularizer=None,bias_regularizer=None,activity_regularizer=None,kernel_constraint=None,bias_constraint=None)2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|06/10CNN-RNN除了在二维卷积的基础上再“卷”一层外,还可以选择专门提取时序特征的RNN,即CNN-RNN架构。顾名思义,这种网络将CNN卷积的结果作为图片特征,再将这些图片特征作为RNN的输入,以捕捉不同图片之间的时序关系。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|07/10多模态架构上述两种算法的核心思想都是从视觉角度挖掘视频数据中帧与帧之间的时序特征,但同样重要的是,视频中的音频数据也包含丰富的信息,能够在情绪识别、说话人识别等任务中都提供增量信息。这种综合考虑不同模态数据的方法被统称为多模态。目前视频领域的多模态架构包括后端融合、中端融合和前端融合三类。其中,前端融合指的是从不同模态数据中提取出统一特征,再将这些特征放入分类器进行学习分类。多模态前端融合方法常结合特征提取方法,以剔除冗余信息,例如主成分分析(PCA)、最大相关最小冗余算法(mRMR)、自动解码器(Autoencoders)等。后端融合指的对不同模态数据构建多个分类器,再将每个分类器的分类结果进行整合,即“分线作战”,常见的后端融合方式包括最大值融合(max-fusion)、平均值融合(averaged-fusion)、贝叶斯规则融合(Bayes’rulebased)以及集成学习(ensemblelearning)等。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|08/10多模态架构中端融合则将不同模态之间的融合交给模型处理,具体而言,先获取所有模态的高维特征表达,然后将这些特征直接输入神经网络,让神经网络学习这些特征之间的关系。图6-42列示了一个针对视频情绪识别的多模态算法框架。可以看到,首先在最左端提取音频和图像特征,然后分别采用合适的网络进行特征提取。接着,将特征进行拼接,并通过一个Softmax层输出分类结果。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.5视频分析技术与算法|09/102026/9/7《大数据技术在会计与财务中的应用》配套课件谢谢观赏!6.5视频分析技术与算法|10/10大数据技术在会计与财务中的应用作者:张敏等2026/9/7《大数据技术在会计与财务中的应用》配套课件第6章·6.6视频分析的实现路径目录6.6.1“统计量”路径6.6.2“多模态”路径6.6视频分析的实现路径6.6视频分析的实现路径|02/05“统计量”路径首先,大多数已有视频研究都是关注视频中的图片序列数据,即提取出图片后,应用本章第1节提到的相关算法和路径进行分析,计算每张图片的指标得分(回归或分类)。然后,对这些得分进行平均、求和,或标准差统计(动作幅度)等运算。总而言之,已有研究大多还停留在通过计算统计量来获取公司(个体)层面的指标,并进一步进行实证检验。由于统计量的计算相对简单,这里就不再给出代码。2026/9/7《大数据技术在会计与财务中的应用》配套课件6.6视频分析的实现路径|03/05“多模态”路径此外,目前有少量研究综合考虑了图片、音频以及文本等多模态数据的信息。然而,这些研究仅仅采取了前文提及的“后端融合”方法,即分别围绕不同模态的数据获得各自的分析结果,然后构建一个复合型指标,并进行实证检验。这样做的好处是,融合模型的错误来自不同的分类器,而这些分类器的错误通常是独立的、互不影响,不会导致错误的进一步累积。但也希望读者注意,这种做法无法充分挖掘不同模态数据之间的交互作用和关联信息。因而,本书也希望广大学者能够运用计算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论