玩护士睡老师勾搭女下属_欧美变态另类牲交ZOZO_亚洲国产欧美另类久久综合_午夜福利无码a级_亚洲综合一二三_天天干免费视频播放_先锋美女情趣网站在线观看_免费一级毛片全部免费播放瓯_天堂精品mv在线观看99_影音先锋影AV色资源站

檢信專注心理
用技術(shù)創(chuàng)新 做行業(yè)先驅(qū)
檢信ALLEMOTION
  • 什么是語音識別?語音識別有什么作用
    什么是語音識別?語音識別有什么作用語言作為人類交流的基本方式,在幾千年的歷史長河中不斷傳承。近年來,隨著語音識別技術(shù)的不斷成熟,它在我們的生活中得到了廣泛的應(yīng)用,成為通過自然語言進行人機交互的重要方式之一。語音識別技術(shù)如何讓機器“理解”人類語言?隨著計算機技術(shù)的快速發(fā)展,人們對機器的依賴已經(jīng)達到了一個非常高的水平。語音識別技術(shù)使人和機器通過自然語言進行交互成為可能。通過語音識別控制房間照明、空調(diào)溫度和電視相關(guān)操作是很常見的。根據(jù)識別對象的不同,語音識別任務(wù)大致可以分為三類,即孤立詞識別、關(guān)鍵詞識別(或關(guān)鍵詞檢測)和連續(xù)語音識別。其中,孤立詞識別的任務(wù)是識別先前已知的孤立詞,如“開放”和“封閉”。連續(xù)語音識別的任務(wù)是識別任何連續(xù)的語音,如句子或段落。連續(xù)語音流中的關(guān)鍵詞檢測針對的是連續(xù)語音,但它并不識別所有的文本,只檢測一些已知關(guān)鍵詞出現(xiàn)的位置。根據(jù)目標說話人,語音識別技術(shù)可以分為特定人語音識別和非特定人語音識別。前者只能識別一個或幾個人的聲音,而后者可以被任何人使用。顯然,獨立于人的語音識別系統(tǒng)更符合實際需求,但比識別特定的人要困難得多。此外,根據(jù)語音設(shè)備和渠道,可分為桌面(PC)語音識別、電話語音識別和嵌入式設(shè)備(手機、PDA等)語音識別。不同的采集通道會扭曲人類發(fā)音的聲學特征,因此我們需要構(gòu)建自己的識別系統(tǒng)。語音識別應(yīng)用廣泛。常見的應(yīng)用系統(tǒng)包括:語音輸入系統(tǒng),比鍵盤輸入更符合人們的日常習慣,也更自然;語音控制系統(tǒng),即使用語音識別控制設(shè)備比手動控制更快更方便,可應(yīng)用于工業(yè)控制、語音撥號系統(tǒng)、智能家電、聲控智能玩具等諸多領(lǐng)域。
    2021-09-29
  • 檢信智能 Allemotion OS 介紹 語音識別技術(shù)的發(fā)展現(xiàn)狀
    讓機器聽懂人聲,這是人們長久以來的夢想。語音識別是一門交叉學科,涉及多學科研究領(lǐng)域。不同領(lǐng)域的研究成果為語音識別的發(fā)展做出了貢獻。語音識別技術(shù)是一種高科技,它可以讓機器通過識別和理解的過程將語音信號轉(zhuǎn)換成相應(yīng)的文本或命令。計算機語音識別過程與人類語音識別過程基本相同。當前主流的語音識別技術(shù)是基于統(tǒng)計模式識別的基本理論。一個完整的語音識別系統(tǒng)大致可以分為三個部分:(1)語音特征提?。耗康氖菑恼Z音波形中提取隨時間變化的語音特征序列。(2)聲學模型與模式匹配(識別算法):聲學模型是識別系統(tǒng)的底層模型,也是語音識別系統(tǒng)中關(guān)鍵的部分。聲學模型通常是從獲得的語音特征中訓(xùn)練生成的,目的是為每個發(fā)音建立一個發(fā)音模板。在識別過程中,將未知語音特征與聲學模型(模式)進行匹配和比較,計算未知語音的特征向量序列與每個發(fā)音模板的距離。聲學模型的設(shè)計與語言發(fā)音的特點密切相關(guān)。聲學模型單元大小對語音訓(xùn)練數(shù)據(jù)的大小、語音識別系統(tǒng)的識別率和靈活性有很大影響。(3)語義理解:計算機對語音識別結(jié)果的語法和語義進行分析。理解語言的含義,以便做出相應(yīng)的反應(yīng)。它通常是通過語言模型來實現(xiàn)的。語音識別技術(shù)的應(yīng)用:語音識別過程實際上就是一個識別過程。就像人們在聽語音時,不會將語音與語言的語法結(jié)構(gòu)和語義結(jié)構(gòu)分開,因為當語音的發(fā)音模糊時,人們可以利用這些知識來指導(dǎo)理解語言的過程。對于機器來說,語音識別系統(tǒng)也需要使用這些知識,但鑒于語音信號的可變性、動態(tài)性和瞬態(tài)性,語音識別技術(shù)與人腦仍有一定差距。因此,在語音識別技術(shù)的選擇、應(yīng)用模式和系統(tǒng)開發(fā)等方面都需要專業(yè)的設(shè)計和調(diào)試,以達到良好的應(yīng)用效果。
    2021-09-27
  • 檢信智能 Allemotion OS 對語音識別的簡單介紹
    檢信智能 Allemotion OS 對語音識別的簡單介紹 語言作為人類交流的基本方式,在幾千年的歷史長河中不斷傳承。近年來,隨著語音識別技術(shù)的不斷成熟,它在我們的生活中得到了廣泛的應(yīng)用,成為通過自然語言進行人機交互的重要方式之一。語音識別技術(shù)如何讓機器“理解”人類語言?隨著計算機技術(shù)的快速發(fā)展,人們對機器的依賴已經(jīng)達到了一個非常高的水平。語音識別技術(shù)使人和機器通過自然語言進行交互成為可能。通過語音識別控制房間照明、空調(diào)溫度和電視相關(guān)操作是很常見的。根據(jù)識別對象的不同,語音識別任務(wù)大致可以分為三類,即孤立詞識別、關(guān)鍵詞識別(或關(guān)鍵詞檢測)和連續(xù)語音識別。其中,孤立詞識別的任務(wù)是識別先前已知的孤立詞,如“開放”和“封閉”。連續(xù)語音識別的任務(wù)是識別任何連續(xù)的語音,如句子或段落。連續(xù)語音流中的關(guān)鍵詞檢測針對的是連續(xù)語音,但它并不識別所有的文本,只檢測一些已知關(guān)鍵詞出現(xiàn)的位置。根據(jù)目標說話人,語音識別技術(shù)可以分為特定人語音識別和非特定人語音識別。前者只能識別一個或幾個人的聲音,而后者可以被任何人使用。顯然,獨立于人的語音識別系統(tǒng)更符合實際需求,但比識別特定的人要困難得多。此外,根據(jù)語音設(shè)備和渠道,可分為桌面(PC)語音識別、電話語音識別和嵌入式設(shè)備(手機、PDA等)語音識別。不同的采集通道會扭曲人類發(fā)音的聲學特征,因此我們需要構(gòu)建自己的識別系統(tǒng)。語音識別應(yīng)用廣泛。常見的應(yīng)用系統(tǒng)包括:語音輸入系統(tǒng),比鍵盤輸入更符合人們的日常習慣,也更自然;語音控制系統(tǒng),即使用語音識別控制設(shè)備比手動控制更快更方便,可應(yīng)用于工業(yè)控制、語音撥號系統(tǒng)、智能家電、聲控智能玩具等諸多領(lǐng)域。
    2021-09-24
  • Tensorboard可視化:基于LeNet5進行面部表情分類
    Tensorboard可視化:基于LeNet5進行面部表情分類 面部表情分類面部表情是面部肌肉的一個或多個動作或狀態(tài)的結(jié)果。這些運動表達了個體對觀察者的情緒狀態(tài)。面部表情是非語言交際的一種形式。它是表達人類之間的社會信息的主要手段,不過也發(fā)生在大多數(shù)其他哺乳動物和其他一些動物物種中。人類的面部表情至少有21種,除了常見的高興、吃驚、悲傷、憤怒、厭惡和恐懼6種,還有驚喜(高興+吃驚)、悲憤(悲傷+憤怒)等15種可被區(qū)分的復(fù)合表情。面部表情識別技術(shù)主要的應(yīng)用領(lǐng)域包括人機交互、智能控制、安全、醫(yī)療、通信等領(lǐng)域。網(wǎng)絡(luò)架構(gòu)LeNet-5出自論文Gradient-Based Learning Applied to Document Recognition,是一種用于手寫體字符識別的非常高效的卷積神經(jīng)網(wǎng)絡(luò)。LeNet5的網(wǎng)絡(luò)架構(gòu)如下:但是因為我們要做的是面部表情分類,而且CK+數(shù)據(jù)集樣本大小是48*48,因此需要對LeNet5網(wǎng)絡(luò)進行微調(diào)。網(wǎng)絡(luò)架構(gòu)如下: 網(wǎng)絡(luò)結(jié)構(gòu)如下:計算圖如下:代碼實現(xiàn)預(yù)處理數(shù)據(jù)集加載,并進行預(yù)處理,同時將測試集的前225張樣本拼接成15張*15張的大圖片,用于Tensorboard可視化。%matplotlib inlineimport matplotlib.pyplot as pltimport osimport cv2import numpy as npfrom tensorflow import name_scope as namespacefrom tensorflow.contrib.tensorboard.plugins import projectorNUM_PIC_SHOW=225base_filedir='D:/CV/datasets/facial_exp/CK+'dict_str2int={'anger':0,'contempt':1,'disgust':2,'fear':3,'happy':4,'sadness':5,'surprise':6}labels=[]data=[]#讀取圖片并將其保存至datafor expdir in os.listdir(base_filedir): base_expdir=os.path.join(base_filedir,expdir) for name in os.listdir(base_expdir): labels.append(dict_str2int[expdir]) path=os.path.join(base_expdir,name) path=path.replace('\\','/') #將\替換為/ img = cv2.imread(path,0) data.append(img)data=np.array(data)labels=np.array(labels)#將data打亂permutation = np.random.permutation(data.shape[0])data = data[permutation,:,:]labels = labels[permutation]#取前225個圖片拼成一張大圖片,用于tensorboard可視化img_set=data[:NUM_PIC_SHOW]#前225的數(shù)據(jù)用于顯示label_set=labels[:NUM_PIC_SHOW]big_pic=Noneindex=0for row in range(15): row_vector=img_set[index] index+=1 for col in range(1,15): img=img_set[index] row_vector=np.hstack([row_vector,img]) index+=1 if(row==0): big_pic=row_vector else: big_pic=np.vstack([big_pic,row_vector])plt.imshow(big_pic, cmap='gray')plt.show()#寫入大圖片cv2.imwrite(D:/Jupyter/TensorflowLearning/facial_expression_cnn_projector/data/faces.png,big_pic)#轉(zhuǎn)換數(shù)據(jù)格式和形狀data=data.reshape(-1,48*48).astype('float32')/255.0labels=labels.astype('float32')#0.3的比例測試scale=0.3test_data=data[:int(scale*data.shape[0])]test_labels=labels[:int(scale*data.shape[0])]train_data=data[int(scale*data.shape[0]):]train_labels=labels[int(scale*data.shape[0]):]print(train_data.shape)print(train_labels.shape)print(test_data.shape)print(test_labels.shape)#將標簽one-hottrain_labels_onehot=np.zeros((train_labels.shape[0],7))test_labels_onehot=np.zeros((test_labels.shape[0],7))for i,label in enumerate(train_labels): train_labels_onehot[i,int(label)]=1for i,label in enumerate(test_labels): test_labels_onehot[i,int(label)]=1print(train_labels_onehot.shape)print(test_labels_onehot.shape)2.定義前向網(wǎng)絡(luò)import tensorflow as tfIMAGE_SIZE=48 #圖片大小NUM_CHANNELS=1 #圖片通道CONV1_SIZE=5CONV1_KERNEL_NUM=32CONV2_SIZE=5CONV2_KERNEL_NUM=64FC_SIZE=512 #隱層大小OUTPUT_NODE=7 #輸出大小#參數(shù)概要,用于tensorboard實時查看訓(xùn)練過程def variable_summaries(var): with namespace('summaries'): mean=tf.reduce_mean(var) tf.summary.scalar('mean',mean) #平均值 with namespace('stddev'): stddev=tf.sqrt(tf.reduce_mean(tf.square(var-mean))) tf.summary.scalar('stddev',stddev) #標準差 tf.summary.scalar('max',tf.reduce_max(var))#最大值 tf.summary.scalar('min',tf.reduce_min(var))#最小值 tf.summary.histogram('histogram',var)#直方圖#獲取權(quán)重def get_weight(shape,regularizer,name=None): w=tf.Variable(tf.truncated_normal(shape,stddev=0.1),name=name) #variable_summaries(w) if(regularizer!=None): tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w)) return w#獲取偏置def get_bias(shape,name=None): b=tf.Variable(tf.zeros(shape),name=name) #variable_summaries(b) return b #定義前向網(wǎng)絡(luò)def forward(x,train,regularizer): with tf.name_scope('layer'): #把輸入reshape with namespace('reshape_input'): x_reshaped=tf.reshape(x,[-1,IMAGE_SIZE,IMAGE_SIZE,NUM_CHANNELS]) with tf.name_scope('conv1'): #定義兩個卷積層 conv1_w=get_weight([CONV1_SIZE,CONV1_SIZE,NUM_CHANNELS,CONV1_KERNEL_NUM],regularizer=regularizer,name='conv1_w') conv1_b=get_bias([CONV1_KERNEL_NUM],name='conv1_b') conv1=tf.nn.conv2d(x_reshaped,conv1_w,strides=[1,1,1,1],padding='SAME') relu1=tf.nn.relu(tf.nn.bias_add(conv1,conv1_b)) pool1=tf.nn.max_pool(relu1,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME') with tf.name_scope('conv2'): conv2_w=get_weight([CONV2_SIZE,CONV2_SIZE,CONV1_KERNEL_NUM,CONV2_KERNEL_NUM],regularizer=regularizer,name='conv2_w') conv2_b=get_bias([CONV2_KERNEL_NUM],name='conv2_b') conv2=tf.nn.conv2d(pool1,conv2_w,strides=[1,1,1,1],padding='SAME') relu2=tf.nn.relu(tf.nn.bias_add(conv2,conv2_b)) #對卷機后的輸出添加偏置,并通過relu完成非線性激活 pool2=tf.nn.max_pool(relu2,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME') with tf.name_scope('flatten'): #定義reshape層 pool_shape=pool2.get_shape().as_list() #獲得張量的維度并轉(zhuǎn)換為列表 nodes=pool_shape[1]*pool_shape[2]*pool_shape[3] #[0]為batch值,[1][2][3]分別為長寬和深度 #print(type(pool2)) reshaped=tf.reshape(pool2,[-1,nodes]) with tf.name_scope('fc1'): #定義兩層全連接層 fc1_w=get_weight([nodes,FC_SIZE],regularizer,name='fc1_w') fc1_b=get_bias([FC_SIZE],name='fc1_b') fc1=tf.nn.relu(tf.matmul(reshaped,fc1_w)+fc1_b) if(train): fc1=tf.nn.dropout(fc1,0.5) with tf.name_scope('fc2'): fc2_w=get_weight([FC_SIZE,OUTPUT_NODE],regularizer,name='fc2_w') fc2_b=get_bias([OUTPUT_NODE],name='fc2_b') y=tf.matmul(fc1,fc2_w)+fc2_b return y3.定義反向傳播 ,可視化設(shè)置,并進行訓(xùn)練,BATCH_SIZE=100 #每次樣本數(shù)LEARNING_RATE_BASE=0.005 #基本學習率LEARNING_RATE_DECAY=0.99 #學習率衰減率REGULARIZER=0.0001 #正則化系數(shù)STEPS=2500 #訓(xùn)練次數(shù)MOVING_AVERAGE_DECAY=0.99 #滑動平均衰減系數(shù)SAVE_PATH='.\\facial_expression_cnn_projector\\' #參數(shù)保存路徑data_len=train_data.shape[0]#將拼接為big_pic的測試樣本保存至標量,用于訓(xùn)練過程可視化pic_stack=tf.stack(test_data[:NUM_PIC_SHOW]) #stack拼接圖片張量embedding=tf.Variable(pic_stack,trainable=False,name='embedding')if(tf.gfile.Exists(os.path.join(SAVE_PATH,'projector'))==False): tf.gfile.MkDir(os.path.join(SAVE_PATH,'projector'))#創(chuàng)建metadata文件,存放可視化圖片的labelif(tf.gfile.Exists(os.path.join(SAVE_PATH,'projector','metadata.tsv'))==True): tf.gfile.DeleteRecursively(os.path.join(SAVE_PATH,'projector')) tf.gfile.MkDir(os.path.join(SAVE_PATH,'projector'))#將可視化圖片的標簽寫入with open(os.path.join(SAVE_PATH,'projector','metadata.tsv'),'w') as f: for i in range(NUM_PIC_SHOW): f.write(str(label_set[i])+'\n')with tf.Session() as sess: with tf.name_scope('input'): #x=tf.placeholder(tf.float32,[BATCH_SIZE,IMAGE_SIZE,IMAGE_SIZE,NUM_CHANNELS],name='x_input') x=tf.placeholder(tf.float32,[None,IMAGE_SIZE*IMAGE_SIZE*NUM_CHANNELS],name='x_input') y_=tf.placeholder(tf.float32,[None,OUTPUT_NODE],name='y_input') #reshape可視化圖片 with namespace('input_reshape'): image_shaped_input=tf.reshape(x,[-1,IMAGE_SIZE,IMAGE_SIZE,1]) #把輸入reshape tf.summary.image('input',image_shaped_input,7) #添加到tensorboard中顯示 y=forward(x,True,REGULARIZER) global_step=tf.Variable(0,trainable=False) with namespace('loss'): #softmax并計算交叉熵 ce=tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1)) cem=tf.reduce_mean(ce) #求每個樣本的交叉熵 loss=cem+tf.add_n(tf.get_collection('losses')) tf.summary.scalar('loss',loss) #loss只有一個值,就直接輸出 learning_rate=tf.train.exponential_decay( LEARNING_RATE_BASE, global_step, data_len/BATCH_SIZE, LEARNING_RATE_DECAY, staircase=True ) with namespace('train'): train_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step) ema=tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY,global_step) ema_op=ema.apply(tf.trainable_variables()) with namespace('accuracy'): correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1)) accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) tf.summary.scalar('accuracy',accuracy) with tf.control_dependencies([train_step,ema_op]): train_op=tf.no_op(name='train') init_op=tf.global_variables_initializer() sess.run(init_op) #合并所有的summary merged=tf.summary.merge_all() #寫入圖結(jié)構(gòu) writer=tf.summary.FileWriter(os.path.join(SAVE_PATH,'projector'),sess.graph) saver=tf.train.Saver() #保存網(wǎng)絡(luò)的模型 #配置可視化 config=projector.ProjectorConfig() #tensorboard配置對象 embed=config.embeddings.add() #增加一項 embed.tensor_name=embedding.name #指定可視化的變量 embed.metadata_path='D:/Jupyter/TensorflowLearning/facial_expression_cnn_projector/projector/metadata.tsv' #路徑 embed.sprite.image_path='D:/Jupyter/TensorflowLearning/facial_expression_cnn_projector/data/faces.png' embed.sprite.single_image_dim.extend([IMAGE_SIZE,IMAGE_SIZE])#可視化圖片大小 projector.visualize_embeddings(writer,config) #斷點續(xù)訓(xùn) #ckpt=tf.train.get_checkpoint_state(MODEL_SAVE_PATH) #if(ckpt and ckpt.model_checkpoint_path): # saver.restore(sess,ckpt.model_checkpoint_path) for i in range(STEPS): run_option=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) run_metadata=tf.RunMetadata() start=(i*BATCH_SIZE)%(data_len-BATCH_SIZE) end=start+BATCH_SIZE summary,_,loss_value,step=sess.run([merged,train_op,loss,global_step], feed_dict={x:train_data[start:end],y_:train_labels_onehot[start:end]}, options=run_option, run_metadata=run_metadata) writer.add_run_metadata(run_metadata,'step%03d'%i) writer.add_summary(summary,i)#寫summary和i到文件 if(i%100==0): acc=sess.run(accuracy,feed_dict={x:test_data,y_:test_labels_onehot}) print('%d %g'%(step,loss_value)) print('acc:%f'%(acc)) saver.save(sess,os.path.join(SAVE_PATH,'projector','model'),global_step=global_step) writer.close()可視化訓(xùn)練過程執(zhí)行上面的代碼,打開tensorboard,可以看到訓(xùn)練精度和交叉熵損失如下:由于只有六百多的訓(xùn)練樣本,故得到曲線抖動很大,訓(xùn)練精度大概在百分之八九十多浮動,測試精度在百分之七八十浮動,可見精度不高。下面使用Tensorboard將訓(xùn)練過程可視化(圖片是用Power Point錄頻然后用迅雷應(yīng)用截取gif得到的): ————————————————版權(quán)聲明:本文為CSDN博主「陳建驅(qū)」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
    2021-09-20
  • 檢信智能ALLEMOTION OS 語音情感識別——語音(聲音的預(yù)處理)
    檢信智能ALLEMOTION OS 語音情感識別——語音(聲音的預(yù)處理)1. 語音信號(聲音是什么)聲音是由物體振動產(chǎn)生的聲波,是通過介質(zhì)(空氣或固體、液體)傳播并能被人或動物聽覺器官所感知的波動現(xiàn)象,最初發(fā)出振動的物體叫聲源。聲音(語音消息)的基本模擬形式是一種稱為語音信號的聲學波。語音信號可以通過麥克風轉(zhuǎn)化成電信號,轉(zhuǎn)換成語音波形圖,如下圖為消息should we chase的波形圖。橫坐標表示時間,縱坐標表示振幅。文本should we chase按照發(fā)音可以表示成音素的形式[SH UH D - W IY - CH EY S],聲波圖中的每一段表示一個音素,在ARBAbet音素集中包含近64 = 2^6個符號。聲音作為波的一種,頻率(聲源在一秒內(nèi)振動的次數(shù))和振幅是描述波的重要屬性,頻率的大小與我們通常所說的音高對應(yīng),而振幅影響聲音的大小。聲音可以被分解為不同頻率不同強度正弦波的疊加,正弦波是頻率成分最為單一的一種信號,任何復(fù)雜信號都可以看成由許許多多頻率不同、大小不等的正弦波復(fù)合而成。這種變換(或分解)的過程,稱為傅立葉變換,通過這種分解我們可以把時域圖轉(zhuǎn)為頻域圖。正弦信號表達式為y=Asin(ωx+φ)y=Asin?(ωx+φ)。其中A表示振幅。ω/2πω/2π表示頻率。對于(空氣中的)聲振動而言,振幅是聲壓與靜止壓強之差的最大值。其中聲壓是聲波在空氣中傳播時形成壓縮和稀疏交替變化的壓力增值。麥克風錄制聲音的原理就是將空氣中的壓力變動波轉(zhuǎn)化成電信號的變動。而我們平常說的聲音強度(響亮程度)就是由振幅決定的,聲音強度的單位是分貝(dB),計算公式如下,用實測聲壓和參考聲壓之比的常用對數(shù)(常用對數(shù)lg以10為底,自然對數(shù)ln以e為底)的20倍來表示。下式中分母是參考值的聲壓,通常為20微帕,人類能聽到的最小聲壓。分貝表示功率量之比時,等于功率強度之比的常用對數(shù)的10倍。分貝表示場量之比時,等于場強幅值之比的常用對數(shù)的20倍。語音鏈(聲音是怎么發(fā)出的)從語音信號的產(chǎn)生到感知的過程稱為語音鏈,如下圖所示:2 下面是語音信號產(chǎn)生的四個步驟:文本:消息以某種形式出現(xiàn)在說話者的大腦中,消息攜帶的信息可認為有著不同的表示形式,例如最初可能以英語文本的形式表示。假設(shè)書面語有32個符號,也就是2^5,用5個bit表示一個符號。正常的平均說話速率為15個符號每秒。上圖例子中有15個字母“should we chase”,持續(xù)了0.6秒,信息流的速率為15x5/0.6 = 125 bps。音素:為了說出這條消息,說話者隱式地將文本轉(zhuǎn)換成對應(yīng)口語形式的聲音序列的符號表示,即文本符號轉(zhuǎn)成音素符號,音素符號用來描述口語形式消息的基本聲音及聲音發(fā)生的方式(即語速和語調(diào))。ARBAbet音素集中包含近64 = 2^6個符號,用6個bit表示一個音素,上圖例子中有8個音素,持續(xù)了0.6秒,信息流的速率為8x6/0.6 = 80 bps,考慮描述信號韻律特征的額外信息(比如段長,音高,響度),文本信息編碼成語音信號后,總信息速率需要再加上100bps。發(fā)音:神經(jīng)肌肉系統(tǒng)以一種與產(chǎn)生口語形式消息及其語調(diào)相一致的方式,移動舌頭,唇,牙齒,頜,軟腭,使這些聲道發(fā)聲器官按規(guī)定的方式移動,進而發(fā)出期望的聲音。刺激共振:聲道系統(tǒng)產(chǎn)生物理生源和恰當?shù)臅r變聲道形狀,產(chǎn)生上圖所示的聲學波形。前兩個階段的信息表示是離散的,用一些簡單假設(shè)就可以估計信息流的速率。但是后兩個階段信息是連續(xù)的,以關(guān)節(jié)運動的形式發(fā)出,想要度量這些連續(xù)信息,需要進行恰當?shù)牟蓸雍土炕@得等效的數(shù)字信號,才能估計出數(shù)據(jù)的速率。事實上,因為連續(xù)的模擬信號容易收到噪聲的影響,抗噪能力弱,通常會轉(zhuǎn)為離散的數(shù)字信號。在第三階段,進行采樣和量化后得到的數(shù)據(jù)率約為2000bps。在最后一個階段,數(shù)字語音波形的數(shù)據(jù)率可以從64kbps變化到700kbps。該數(shù)據(jù)是通過測量“表示語音信號時為達到想要的感知保真度”所需要的采樣率和量化計算得到的。比如,“電話質(zhì)量”的語音處理需要保證寬帶為0~4kHz,這意味著采樣率為8000個樣本每秒(根據(jù)香農(nóng)采樣定理,為了不失真地恢復(fù)模擬信號,采樣頻率應(yīng)該不小于模擬信號頻譜中最高頻率的2倍),每個樣本可以量化成8比特,從而得到數(shù)據(jù)率64000bps。這種表示方式很容易聽懂,但對于大多數(shù)傾聽者來說,語音聽起來與說話者發(fā)出的原始語音會有不同。另一方面,語音波形可以表示成“CD質(zhì)量”,采用44100個樣本每秒的采樣率,每個樣本16比特,總數(shù)據(jù)率為705600bps,此時復(fù)原的聲學波聽起來和原始信號幾乎沒有區(qū)別?,F(xiàn)在在音樂app上下載歌曲的時一般有四種音樂品質(zhì)選擇,標準(128kbps),較高(192kbps),極高(320kbps),無損品質(zhì)。將消息從文本表示轉(zhuǎn)換成采樣的語音波形時,數(shù)據(jù)率會增大10000倍。這些額外信息的一部分能夠代表說話者的一些特征比如情緒狀態(tài),說話習慣等,但主要是由簡單采樣和對模擬信號進行精細量化的低效性導(dǎo)致的。因此,處于語音信號固有的低信息速率考慮,很多數(shù)字語音處理的重點是用更低的數(shù)據(jù)率對語音進行數(shù)字表示(通常希望數(shù)據(jù)率越低越好,同時保證重現(xiàn)語音信號的感知質(zhì)量滿足需要的水平)。3 語音信號中的Analog-Digital Converter,“模-數(shù)”變換(聲音是怎么保存的)預(yù)濾波(反混疊濾波):語音信號在采樣之前要進行預(yù)濾波處理。目的有兩個,一是抑制輸入信號各頻率分量中頻率超過fs/2的所有分量(fs為采樣頻率),以防止混疊干擾;二是抑制50Hz的電源工頻干擾。1.采樣:原始的語音信號是連續(xù)的模擬信號,需要對語音進行采樣,轉(zhuǎn)化為時間軸上離散的數(shù)據(jù)。采樣后,模擬信號被等間隔地取樣,這時信號在時間上就不再連續(xù)了,但在幅度上還是連續(xù)的。經(jīng)過采樣處理之后,模擬信號變成了離散時間信號。采樣頻率是指一秒鐘內(nèi)對聲音信號的采樣次數(shù),采樣頻率越高聲音的還原就越真實越自然。在當今的主流采集卡上,采樣頻率一般共分為22.05KHz、44.1KHz、48KHz三個等級,22.05KHz只能達到FM廣播的聲音品質(zhì),44.1KHz則是理論上的CD音質(zhì)界限(人耳一般可以感覺到20-20K Hz的聲音,根據(jù)香農(nóng)采樣定理,采樣頻率應(yīng)該不小于最高頻率的兩倍,所以40KHz是能夠?qū)⑷硕犚姷穆曇暨M行很好的還原的一個數(shù)值,于是CD公司把采樣率定為44.1KHz),48KHz則更加精確一些。對于高于48KHz的采樣頻率人耳已無法辨別出來了,所以在電腦上沒有多少使用價值。2.量化:進行分級量化,將信號采樣的幅度劃分成幾個區(qū)段,把落在某區(qū)段的采樣到的樣品值歸成一類,并給出相應(yīng)的量化值。根據(jù)量化間隔是否均勻劃分,又分為均勻量化和非均勻量化。均勻量化的特點為“大信號的信噪比大,小信號的信噪比小”。缺點為“為了保證信噪比要求,編碼位數(shù)必須足夠大,但是這樣導(dǎo)致了信道利用率低,如果減少編碼位數(shù)又不能滿足信噪比的要求”(根據(jù)信噪比公式,編碼位數(shù)越大,信噪比越大,通信質(zhì)量越好)。通常對語音信號采用非均勻量化,基本方法是對大信號使用大的量化間隔,對小信號使用小的量化間隔。由于小信號時量化間隔變小,其相應(yīng)的量化噪聲功率也減小(根據(jù)量化噪聲功率公式),從而使小信號時的量化信噪比增大,改善了小信號時的信噪比。量化后,信號不僅在時間上不再連續(xù),在幅度上也不連續(xù)了。經(jīng)過量化處理之后,離散時間信號變成了數(shù)字信號。3.編碼:在量化之后信號已經(jīng)變成了數(shù)字信號,需要將數(shù)字信號編碼成二進制?!癈D質(zhì)量”的語音采用44100個樣本每秒的采樣率,每個樣本16比特,這個16比特就是編碼的位數(shù)。采樣,量化,編碼的過程稱為A/D轉(zhuǎn)換,如下圖所示。反過程為D/A轉(zhuǎn)換,因為A/D之前進行了預(yù)濾波,D/A轉(zhuǎn)換后面還需要加一個平滑濾波器。A/D轉(zhuǎn)換,D/A轉(zhuǎn)換,濾波這些功能都可以用一塊芯片來完成,在市面上能買到各種這樣的芯片。4 語音信號的預(yù)處理(聲音的預(yù)處理)語音信號的預(yù)處理一般包括預(yù)加重,分幀,加窗,端點檢測。預(yù)加重:求語音信號頻譜(頻譜是指時域信號在頻域下的表示方式,關(guān)于頻域和時域的理解如下圖所示),頻率越高相應(yīng)的成分越小,高頻部分的頻譜比低頻部分的難求,為此要在預(yù)處理中進行預(yù)加重(Pre-emphasis)處理。預(yù)加重的目的是提高高頻部分,使信號的頻譜變得平坦,以便于頻譜分析或者聲道參數(shù)分析。預(yù)加重可在語音信號數(shù)字化時在反混疊濾波器之前進行,但一般是在語音信號數(shù)字化之后。短時分析:語音信號從整體來看是隨時間變化的,是一個非平穩(wěn)過程,不能用處理平穩(wěn)信號的數(shù)字信號處理技術(shù)對其進行分析處理。但是,由于不同的語音是由人的口腔肌肉運動構(gòu)成聲道某種形狀而產(chǎn)生的響應(yīng),這種運動對于語音頻率來說是非常緩慢的,所以從另一方面看,雖然語音信號具有時變特性,但是在一個短時間范圍內(nèi)(一般認為在10-30ms)其特性基本保持相對穩(wěn)定,即語音具有短時平穩(wěn)性。所以任何語音信號的分析和處理必須建立在“短時”的基礎(chǔ)上,即進行“短時分析”。分幀:為了進行短時分析,將語音信號分為一段一段,其中每一段稱為一幀,一般取10-30ms,為了使幀與幀之間平滑過渡,保持連續(xù)性,使用交疊分段的方法,可以想成一個指針p從頭開始,截取一段頭為p,長度為幀長的片段,然后指針p移動,移動的步長就稱為幀移,每移動一次都截取一段,這樣就得到很多幀。加窗:加窗就是用一定的窗函數(shù)w(n)來乘s(n),從而形成加窗語音信號sw(n)=s(n)?w(n),常用的窗函數(shù)是矩形窗和漢明窗,用矩形窗其實就是不加窗,窗函數(shù)中有個N,指的是窗口長度(樣本點個數(shù)),對應(yīng)一幀,通常在8kHz取樣頻率下,N折中選擇為80-160(即10-20ms持續(xù)時間)。端點檢測:從一段語音信號中準確地找出語音信號的起始點和結(jié)束點,它的目的是為了使有效的語音信號和無用的噪聲信號得以分離。對于一些公共的語音數(shù)據(jù)集可以不做這步操作,因為這些語音的內(nèi)容就是有效的語音信號(可以認為研究人員已經(jīng)對數(shù)據(jù)做過端點檢測)。語音信號的特征(聲音的特征)特征的選取是語音處理的關(guān)鍵問題,特征的好壞直接影響到語音處理(比如語音識別)的精度。然而在語音領(lǐng)域中,沒有一個所謂的標準特征集,不同的語音系統(tǒng)選取的特征組合不盡相同。語音的特征一般是由信號處理專家定義的,比較流行的特征是MFCC(梅爾頻率倒譜系數(shù))。5 語音情感識別算法常用的機器學習分類器:模式識別領(lǐng)域的諸多算法(傳統(tǒng))都曾用于語音情感識別的研究,比如GMM(高斯混合模型),SVM,KNN,HMM(隱馬爾可夫模型)。用LLDs(low level descriptors)和HSFs(high level statistics functions)這些手工設(shè)計特征去訓(xùn)練。聲譜圖+CRNN:最近很多人用聲譜圖加上CNN,LSTM這些深度學習模型來做。還有手工特征加聲譜圖一起作為特征放進深度學習模型。也有人用DBN,但是不多。3.手工特征+CRNN:也有人用手工特征加CRNN做?!鏅?quán)聲明:本文為CSDN博主「醒了的追夢人」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
    2021-09-20
  • 檢信智能ALLEMOTION OS推薦免費下載的語音情感數(shù)據(jù)庫
    檢信智能ALLEMOTION OS推薦免費下載的語音情感數(shù)據(jù)庫檢信智能ALLEMOTION OS推薦免費下載的語音情感數(shù)據(jù)庫計算機對從傳感器采集來的信號進行分析和處理,得出對方正處在的情感狀態(tài),這種行為叫作情感識別。目前對于情感識別有兩種方式,一種是檢測生理信號如呼吸,心律和體溫等,另一種是檢測情感行為如面部表情識別,語音情感識別和姿態(tài)識別。語音情感數(shù)據(jù)集是研究語音情感識別的重要基礎(chǔ),按照情感描述類型可將數(shù)據(jù)集分為離散情感數(shù)據(jù)庫和維度情感數(shù)據(jù)庫,前者以離散的語言標簽(如高興,悲傷等)作為情感標注,后者以連續(xù)的實數(shù)坐標值表示情感。下面介紹一些離散語音情感數(shù)據(jù)集:Belfast英語情感數(shù)據(jù)庫:40位錄音者(20男20女,18-69歲),對五個段落(每個段落7-8個句子)進行演講錄制,演講者按照五種情感傾向進行演講:生氣(anger),悲傷(sadness),高興(happiniess),害怕(fear),中性(neutral)。柏林Emo-DB情感數(shù)據(jù)庫:德國柏林工業(yè)大學錄制,10位演員(5男5女),對10個德語語音進行表演,包含了七種情感:生氣(anger),悲傷(sadness),高興(happiniess),害怕(fear),中性(neutral),厭惡(disgust),無聊(boredom)。共包含800句語料(10 位演員 x10 句話 x7 種情感+100 條某些語句的二次版本),后經(jīng)過篩選得到500多條,采樣率為 48kHz (后壓縮至 16kHz),16bit 量化。語料文本的選取遵從語義中性、無情感傾向的原則,且為日??谡Z化風格,無過多的書面語修飾。語音的錄制在專業(yè)錄音室中完成,要求演員在表演某個特定情感片段前通過回憶自身真實經(jīng)歷或體驗進行情緒的醞釀,來增強情緒的真實感。FAU AIBO兒童德語情感數(shù)據(jù)庫:2009年在Interspeech會議上舉辦Emotion Challenge評比中指定的語音情感數(shù)據(jù)庫。通過兒童與索尼公司的AIBO機器狗進行自然交互,從而進行情感數(shù)據(jù)的采集。說話人由51名兒童組成,年齡段為10-13歲,其中30個為女性。語料庫包含9.2小時的語音,48401個單詞。采樣頻率為48kHz(后壓縮至 16kHz),16比特量化。該數(shù)據(jù)庫中情感數(shù)據(jù)的自然度高,數(shù)據(jù)量足夠大,是較為流行的一個語音情感數(shù)據(jù)庫。CASIA漢語情感數(shù)據(jù)庫:中科院自動化所錄制,兩男兩女錄制500句不同的文本,通過演講者不同的感情演講得出,最后的語音又人工篩選,得到了大約9600條語句。分為六類情感。ACCorpus系列漢語情感數(shù)據(jù)庫:清華大學和中科院心理研究所合作錄制,相對于CASIA錄制工作者更多,代表性更強。包含如下 5 個相關(guān)子庫:ACCorpus_MM 多模態(tài)、多通道的情感數(shù)據(jù)庫;ACCorpus_SR 情感語音識別數(shù)據(jù)庫;ACCorpus_SA 漢語普通話情感分析數(shù)據(jù)庫;ACCorpus_FV 人臉表情視頻數(shù)據(jù)庫;ACCorpus_FI 人臉表情圖像數(shù)據(jù)庫。以 ACCorpus_SR 為例,該子庫是由 50 位錄音人(25 男25女)對 5類情感(中性、高興、生氣、恐懼和悲傷)各自表演得到,16kHz 采樣,16bit 量化。IEMOCAP: 南加利福尼亞大學錄制的,10個演員,1男1女演繹一個session,共5個session。錄制了將近12小時的數(shù)據(jù),有視頻,語音,人臉的變動捕捉和文本。包括即興自發(fā)的和照著稿子念的。每個utterance至少三個人評估。包括9種情感(anger,happiness,excitement,sadness,frustration,fear,surprise,other和neural)的離散標簽,以及三個維度的維度標簽(valence, activation and dominance)?!鏅?quán)聲明:本文為CSDN博主「醒了的追夢人」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/qq_33472146/article/details/96433766
    2021-09-20