[TOC]
歌聲合成原理
- 歌唱產(chǎn)生的音樂成為歌聲。歌唱更注意著重于通過橫膈膜和腹部甚至下腹部肌肉來調(diào)整呼吸, 從而更好地控制音高、音色等。
- 歌唱中的顫音是指音高急劇上下波動(dòng)的聲音,是由空氣有控制地通 過放松的喉部而產(chǎn)生。
- 一般包括兩個(gè)過程:樂譜的分析和聲音的產(chǎn)生。
- 樂譜分析:調(diào)、節(jié)奏、旋律和語義
音樂四要素
- 音的高低:音高 (最重要):發(fā)聲體的振動(dòng)頻率決定,是周期的倒數(shù)
- 人堆頻率的感知是非線性的,例如100Hz與它的2倍頻200Hz之間的距離和 200Hz與它的2倍頻400Hz間的距離對人耳來說是一致的。
- 頻率大則音高,頻率小則音低。
- 音樂上倍頻稱為一個(gè)八度,西方的十二平均律把一個(gè)八度分為十二個(gè)半音。
- 標(biāo)準(zhǔn)音高A5((5表示該音符在第5個(gè)八度音程),):中央c上的A音符發(fā)音頻率為440HZ,表示成A=440HZ,A440,<u>
國際通用標(biāo)準(zhǔn)音</u> - midi 與頻率的換算
- 節(jié)拍
- 是音樂中規(guī)律地強(qiáng)拍和弱拍的反復(fù),如果我們跟隨音樂的進(jìn) 行用腳一下一下地點(diǎn)地,每一下就是一拍,打擊樂器在音樂中就是配合節(jié)拍演奏的。
- 在樂譜中表示節(jié)拍用小節(jié),每一個(gè)樂譜前面都有拍號(hào),中間改變節(jié)奏會(huì)改變拍號(hào)。分子代表每一小節(jié)有多少拍子,分母代表用什么音符代表一拍。
- 如2/4代表用四分音 符代表一拍,每-d,節(jié)有兩拍。
- 速度tempo決定了一段音的快慢,是音樂的重要元素,影響音樂的情感和演奏難度。
- 速度一般以文字或數(shù)字標(biāo)記的于樂譜的開端,習(xí)慣于每分鐘多少拍,(beats per minute,BPM)作為度量單位。
- BPM的數(shù)值越大代表越快的速度。
- 音的長短:(最重要):音符的長短,由發(fā)聲體震動(dòng)的振幅決定的。
- b分之一音符
- 音的強(qiáng)弱:表征音樂的力度(強(qiáng)度),力度的變化是音樂作品中表達(dá)情感的常用方式之 一
- 音色
- 連音符:是一個(gè)音節(jié)包含一個(gè)或多個(gè)音符的情況
- 音程:兩個(gè)音之間的距離,音程的單位是分貝(Cent)
- image
語音產(chǎn)生的機(jī)理
- 語音產(chǎn)生的過程包括三部分
聲門下部分,聲門部分。聲門上部分
- >聲門下部分由氣管,支氣管,肺等呼吸氣管組成,它提供發(fā)聲的動(dòng)力。
- >聲門在發(fā)聲時(shí)作有節(jié)奏的開閉動(dòng)作,把從肺呼出的氣流調(diào)節(jié)成脈沖狀聲門 波。這種攜帶了能量的聲門波成為說話和歌唱時(shí)的基本聲源。
- >聲門上部分是整個(gè)共鳴腔,包含口腔,鼻腔和咽腔。聲門波經(jīng)過共鳴腔的 調(diào)節(jié)以及輻射效應(yīng),產(chǎn)生出不同的音素,并發(fā)出聲音。- 歌聲合成大致分為兩類
- 基于人耳感知機(jī)制的頻率參數(shù)模型和基于聲音產(chǎn)生原理的物理模型。
歌聲合成研究現(xiàn)狀
基于波形拼接的方法
- 處理過程
- 音符標(biāo)注、分割
- 缺點(diǎn):過程復(fù)雜、需要人工介入,需要建立大量的規(guī)則
基于統(tǒng)計(jì)模型
- 實(shí)例:基于隱馬爾科夫鏈的系統(tǒng)
- 基于源一濾波器模型對歌聲進(jìn)行信號(hào)分解,得到基頻和頻譜 參數(shù),然后利用隱馬爾科夫模型對這些參數(shù)進(jìn)行建
- 優(yōu)點(diǎn):
- 通過一定數(shù)量的歌聲可以達(dá)到一個(gè)不錯(cuò)的音質(zhì)
- 對歌聲進(jìn)行參數(shù)分解,需要存儲(chǔ)的的參數(shù)需要空間小
- 參數(shù)的改變和轉(zhuǎn)換非常的便捷,因此改變歌聲的音質(zhì),音高,時(shí)長等特征方面非常靈活
- 缺點(diǎn)
- 真實(shí)感差
漢語歌聲合成:歌聲轉(zhuǎn)換
基于統(tǒng)計(jì)模型的漢語歌聲 合成研究
基頻模型
- 針對歌聲基頻存在的數(shù)據(jù)稀疏問題,提出了參考樂譜的基頻引導(dǎo)方 法。該方法將樂譜中包含的基頻信息引入到歌聲基頻的生成算法中, 避免了因數(shù)據(jù)稀疏而造成的合成音高在時(shí)間和頻譜結(jié)構(gòu)上出現(xiàn)偏差的 問題,可以合成出與樂譜相一致的具有精準(zhǔn)音高的基頻。
- 對真實(shí)基頻和樂譜基頻之間可能存在差異的問題進(jìn)行了研究,提出了 在訓(xùn)練中也考慮樂譜基頻因素從而準(zhǔn)確得到兩者之間的差值的方法。 利用該方法可以得到相比樂譜基頻引導(dǎo)方法更加準(zhǔn)確和真實(shí)的基頻估 計(jì)。上述方法也可用于連音符的合成。
HMM
- 馬爾科夫原理
-
隱馬爾科夫鏈
- HMM三個(gè)基本問題
- 1.給定一個(gè)輸出序列O和模型入,求模型輸出此序列的概率。這個(gè)問題可通 過前向后向算法求解。
- 2.給定一個(gè)輸出序列和模型,求最可能輸出此序列的狀態(tài)序列。這個(gè)問題可 通過Viterbi算法求解。
- 3.給定一個(gè)輸出序列和模型結(jié)構(gòu),求模型參數(shù)使得概率最大。這是模型的訓(xùn) 練問題,Baum.Welch算法可以用來求解。
- image
- HMM三個(gè)基本問題
基于HMM的聲音合成框架
建模尺度
- 聲韻母作為建模單元
建模結(jié)構(gòu)
- image
特征提取
- 從波形中提取基頻和頻譜特征。
- 頻譜特征采用mel-cepstrum特征
- image
模型訓(xùn)練階段
- image
合成階段
- 生成的聲學(xué)參數(shù)輸入到梅爾對數(shù)頻譜估計(jì)濾波器,合成出歌聲。
歌聲合成的關(guān)鍵
- 表達(dá)出正確的音樂信息,即音高和節(jié)奏要精準(zhǔn)。這對歌聲的時(shí)長模型和基 頻模型提出了新要求,需要將音樂信息加入建模方可實(shí)現(xiàn),
- 顫音的合成是歌聲的關(guān)鍵。
歌聲的市場與樂譜的關(guān)系
- 唱歌的時(shí)候的開始時(shí)間相對于樂譜有一個(gè)提前量。
- 提前量
歌聲的基頻與樂譜的關(guān)系
- 1.歌聲的基頻需要遵循樂譜,也就是說要”在調(diào)上”。一般的朗誦語音和歌聲 的最大區(qū)別在于歌聲必須遵循樂譜的音高。同時(shí)音高是影響歌聲合成質(zhì)量 的一個(gè)關(guān)鍵影響因素。
- 2.歌聲的基頻包含有顫音,顫音是音樂情緒的表達(dá)的重要組成部分,也是衡 量專業(yè)歌手的重要指標(biāo)。
- 歌聲的基頻與樂譜的音高
時(shí)間模型
- 唱歌的起點(diǎn)與樂譜上的時(shí)間有一個(gè)提前差,
- 時(shí)間模型
基頻稀疏問題
- 在矩陣中,若數(shù)值為0的元素?cái)?shù)目遠(yuǎn)遠(yuǎn)多于非0元素的數(shù)目,并且非0元素分布沒有規(guī)律時(shí),則稱該矩陣為稀疏矩陣
- 由于歌聲中的基頻中含有大量的上下文,比如音高、調(diào)、節(jié)奏等信息,
- 因此基頻通 常是稀疏的,所以在訓(xùn)練數(shù)據(jù)中出現(xiàn)的很少的上下文情況將無法得到充分訓(xùn)練, 這會(huì)導(dǎo)致無法合成出符合樂譜音高的基頻曲線。
實(shí)際基頻與樂譜差值建模
- 對基頻與樂譜的音高曲線進(jìn)行建模,位歸一化方法,這樣雖然基頻是稀疏的,但是基頻與樂譜的差距在縮小。
- 數(shù)據(jù) 層次的歸一化方法在訓(xùn)練前對基頻數(shù)據(jù)進(jìn)行處理,然后將基頻差用于訓(xùn)練。 這樣做會(huì)引起一個(gè)問題,基頻在做歸一化時(shí)需要先與樂譜做對齊,因此在后續(xù) 訓(xùn)練中都得按照這個(gè)對齊的結(jié)果進(jìn)行。這樣很容易出現(xiàn)問題,第一,對齊通常無 法保證準(zhǔn)確,第二,只能使用Viterbi訓(xùn)練而無法使用嵌入的EM訓(xùn)練,EM.訓(xùn) 練通常比Viterbi訓(xùn)練要好。模型層次的歸一化方法巧妙的運(yùn)用了說話人適應(yīng)[46]的技術(shù),在模型層次對基頻進(jìn)行歸一化,解決了以上問題。
顫音建模
- 有正確的音準(zhǔn)和節(jié)奏。顫音也是語音和歌聲的最大區(qū)別。
-
顫音幅度和速率
- 顫音幅度顧名思義指的是顫音上下抖動(dòng)的幅度,顫音速率指 顫音的變化速率。
- 其中bt是第t個(gè)狀態(tài)對應(yīng)的基頻值,轉(zhuǎn)換矩陣Bt=[1,bt]由樂譜唯一決定, 因此氐是唯一需要估計(jì)的參數(shù)。
- image
- 歌聲的基頻= 語調(diào)部分 + 顫音部分
- 顫音參數(shù)提取用的最多的是基于希爾伯特變換的方法。希爾伯特變換可以計(jì)算信號(hào)瞬時(shí)速率,非常適合顫音的時(shí)變特點(diǎn)。
歌聲合成的評價(jià)方式
- 定義了一個(gè)平均音符距離指標(biāo),它是以音符為基本單 位進(jìn)行計(jì)算的,所以它能從更高的尺度上,同時(shí)也是從音樂的意義上來衡量兩 個(gè)基頻曲線間的距離。
歌聲庫的建立
曲目選擇
- 不是的
- 饒舌類歌曲
- 自由節(jié)奏曲目
- 音高不標(biāo)準(zhǔn)的歌曲,如一些民族歌曲中出現(xiàn)的非標(biāo)準(zhǔn)音。
- 選擇曲目:兒童歌曲以及傳統(tǒng)流行歌曲中得到
- 所有拼音的覆蓋
- 聲韻母分布的平衡
- 調(diào)的覆蓋和平衡
- 節(jié)奏的覆蓋和平衡
- 曲目
- 傳統(tǒng)流行歌曲
樂譜分析
- 將樂譜轉(zhuǎn)換為用于訓(xùn)練與合成的上下文標(biāo)注是歌聲合成系統(tǒng)的前端部分。
標(biāo)準(zhǔn)的MIDI
- MIDI(music Instrument Digital interface),中文稱為數(shù)字接口,是一個(gè)工業(yè)標(biāo)準(zhǔn)的電子通信協(xié)議。
- 編號(hào)為128的MIDI消息類型為 Note On,即開始演奏一個(gè)音符;編號(hào)為144的MIDI消息類型為Note Of!f,即停 止演奏一個(gè)音符。
- midi文件
- 讀入 MIDI 格式文件,產(chǎn)生一個(gè) n*7 的矩陣,其中矩陣的第三列表示通道標(biāo)號(hào),第四列表示音符音高,第五列表示按鍵的速度,然后提取代表主通道信息的子矩陣,子矩陣的每行代表樂譜中每個(gè)音符的基頻等信 息。子矩陣的第四列對應(yīng)于樂譜中每個(gè)音符的頻率,利用子矩陣中第六列和第七列的數(shù) 值可求出樂譜中任一音符的時(shí)長。
- "度”就是音與音之間距離的衡量單位。而音與音之間音高的距離叫做音程, 半音(Semitone)是其計(jì)算的最小單位。有些音之間的距離僅差半音,此時(shí)我們稱之為“半 音程”,而有些則差兩個(gè)半音, 我們則稱之為“全音程”
示例
- 保存為mid
import random
import sys
from mido import Message, MidiFile, MidiTrack, MAX_PITCHWHEEL
notes = [64, 64+7, 64+12]
outfile = MidiFile()
track = MidiTrack()
outfile.tracks.append(track)
track.append(Message('program_change', program=12))
delta = 300
ticks_per_expr = int(sys.argv[1]) if len(sys.argv) > 1 else 20
for i in range(4):
note = random.choice(notes)
track.append(Message('note_on', note=note, velocity=100, time=delta))
for j in range(delta // ticks_per_expr):
pitch = MAX_PITCHWHEEL * j * ticks_per_expr // delta
track.append(Message('pitchwheel', pitch=pitch, time=ticks_per_expr))
track.append(Message('note_off', note=note, velocity=100, time=0))
outfile.save('test.mid')
- mid2json
import sys
import json
import mido
def midifile_to_dict(mid):
tracks = []
for track in mid.tracks:
tracks.append([vars(msg).copy() for msg in track])
return {
'ticks_per_beat': mid.ticks_per_beat,
'tracks': tracks,
}
mid = mido.MidiFile(sys.argv[1])
print(json.dumps(midifile_to_dict(mid), indent=2))
print('mid',mid)
- mid 數(shù)據(jù)讀取
from mido import Message,MidiFile
msg = Message('note_on', note=60,channel=2,velocity=112)
# velocity 速度
# channel 頻道
# note 音符
print('msg',msg)
print(msg.note,msg.channel,msg.velocity,msg.time)
# 轉(zhuǎn)化為字節(jié)
print(msg.bytes())
print(msg.bin())
print(msg.hex())
# 從字節(jié)加載數(shù)據(jù)
msg1 = Message.from_bytes([0x90, 0x40, 0x60])
print(msg1)
# 打開mid 文件
mid = MidiFile('../test.mid')
# 有多少個(gè)音軌
for i, track in enumerate(mid.tracks):
print('Track {}: {}'.format(i, track.name))
for msg in track:
if msg.is_meta:
print('meta')
else:
print(msg)
# 計(jì)算速度
print(msg.bpm2tempo())
'''mid 總時(shí)間'''
print('mid.length',mid.length)
'''
type 0 (single track): all messages are saved in one track
type 1 (synchronous): all tracks start at the same time
type 2 (asynchronous): each track is independent of the others
'''
print(mid.type)
MusicXML
- xml
xml解析
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "errrolyan"
# Date: 18-10-16
# Describe = "樂譜xml文件轉(zhuǎn)化未為拼音”
import os,re,sys
import os.path
import xml.etree.ElementTree as ET
import pinyin
from collections import Counter
def coverFiles(sourceDir, targetDir):
for file in os.listdir(sourceDir):
sourceFile = os.path.join(sourceDir, file)
targetFile = os.path.join(targetDir, file)
if os.path.isfile(sourceFile):
open(targetFile, "wb").write(open(sourceFile, "rb").read())
def fileread(filepath):
pathDir = os.listdir(filepath)
for s in pathDir:
newDir = os.path.join(filepath, s)
if os.path.isfile(newDir):
if os.path.splitext(newDir)[1] == ".xml":
print(newDir)
name1 = newDir[13:39]
tree = ET.parse(newDir)
root = tree.getroot()
for text in root.iter('text'):
text.text = re.sub(u"[\s.。??!!;;\/_:,%^*(\"“”《》$\,']", '', text.text)
if u'\u4e00' <= text.text <= u'\u9fff':
text.text = pinyin.get(text.text, format="strip", delimiter=" ") # format="strip" "numerical"
print(text.text)
text.text = str(text.text)
text.set('updated', 'yes')
print("第" + newDir + "首歌完成?。。?)
tree.write(newDir,encoding="utf-8",xml_declaration='xml version="1.0" encoding="utf-8"')
def xml_to_pinyin(xml_in_dir, xml_out_dir):
coverFiles(xml_in_dir, xml_out_dir)
fileread(xml_out_dir)
if __name__=="__main__":
usage = 'Usage: xml_to_Pinyin.py xml_in_dir xml_out_dir'
if len(sys.argv) != 3:
xmlInPath = 'xml_in_dir1'
xmlOutPath = 'xml_out_dir1'
else:
xmlInPath = sys.argv[1]
xmlOutPath = sys.argv[2]
xml_to_pinyin(xmlInPath,xmlOutPath)
print("完成轉(zhuǎn)換拼音")
基線系統(tǒng)搭建
- 對歌聲數(shù)據(jù),使用25ms的漢明窗,5ms 的幀移進(jìn)行MGC參數(shù)提取,MGC參數(shù)包含能量特征一共35維度。基頻使 用Snack庫中的get_f0提取snack,基頻的上下限我們?nèi)≈?0Hz與700Hz,對應(yīng) MIDI音高約為E2與F5。顫音被檢測出來并從基頻中減去。所有的特征,包含對數(shù)域基頻,顫音,MGC都求一階及二階動(dòng)態(tài)特征。HMM狀態(tài)數(shù)目為7個(gè), MGC流使用單高斯,基頻和顫音流使用多空間概率分布HMM。
歌聲信號(hào)分析
- 時(shí)域分析和頻域分析都有各自的局限性:時(shí)域分析對語音信號(hào)的頻率特性沒有直觀的顯示;頻域分析中又缺乏語音信號(hào)隨時(shí)間的變化關(guān)系。
時(shí)域分析
- image
- 時(shí)域波形 圖中可以看出語音的時(shí)長、音節(jié)的起止位置;另外,通過波形是否具有周期性可以區(qū)分 清音和濁音;通過觀察不同音素的波形區(qū)別,甚至還可以大概的估計(jì)出濁音的基音周期。
頻域分析
- 音頻信號(hào)的頻率、功率譜、倒頻譜、頻譜包絡(luò)。
- 處理方式:短時(shí)傅里葉變換。
語譜分析
語譜分析是動(dòng)態(tài)的頻譜,反應(yīng)了語音頻譜隨時(shí)間的變化情況。
語譜圖是語譜分析的外在表現(xiàn)形式,語譜 圖也稱頻譜分析視圖,采用二維平面來表示三維信息。它的橫坐標(biāo)是時(shí)間,縱坐標(biāo)是頻 率,坐標(biāo)點(diǎn)值為語音數(shù)據(jù)能量。
- image
語譜圖中還可以確定語音參數(shù),如共振峰頻率、基頻。與時(shí)間軸平行的橫杠帶紋反映的就是共振峰的特點(diǎn)。
提取工具world
-
World 通過CheapTrick的方法獲取頻譜包絡(luò)信息,音按照基頻的周期為單位進(jìn)行分段,以此 保證波形和頻譜的平滑連續(xù).對于加窗以后的時(shí)域信號(hào)進(jìn)行傅里葉變換獲得對應(yīng)的頻譜,然后在三角窗內(nèi) 對信號(hào)進(jìn)行平滑,再利用倒譜方法,求取頻譜的包絡(luò)信息:
歌聲基頻生成方法
- 歌聲的基頻樂譜上音符的高低密切相關(guān),基頻的大致走向可以 直接反映樂譜上音符的高低。一般來講,基頻可認(rèn)為包含2部分,一部分對應(yīng) 樂譜,一般成為語調(diào)曲線:另一部分為細(xì)微的顫音。顫音是一種近似正弦的持續(xù) 振蕩,頻率在5—8Hz.顫音可以體現(xiàn)歌唱者的細(xì)微情感。而顫音也是衡量一個(gè) 歌手專業(yè)素養(yǎng)的重要指標(biāo)之一。
- 歌聲基頻生成
基于樂譜基頻引導(dǎo)的基頻生成方法
- 一個(gè) 音符的絕對唱名是指這個(gè)音符的真實(shí)音名(C、D、E、F、G、A、B等)對應(yīng)的 唱名(do、re、mi、fa.、sol、la、si等):而一個(gè)音符的首調(diào)唱名是規(guī)定當(dāng)前歌曲的調(diào)名主音為do時(shí),該音符的唱名,表示該音符與調(diào)名主音的音高差值,是一 個(gè)“相對”的音高。
- 十二個(gè)調(diào)名對應(yīng)主音與編號(hào)
樂譜基頻引導(dǎo)
- image
DF0模型
- image
- image
- image
3.實(shí)際上現(xiàn)在實(shí)際基頻與樂譜基頻已經(jīng)一一對應(yīng),因此可求得實(shí)際基頻與樂 譜基頻的差值(Dr0)。
-
建模DF0
- (A)因?yàn)橐呀?jīng)得到了狀態(tài)級(jí)別的對齊,因此每個(gè)DF0值都可對應(yīng)到一個(gè)FO模型,所以我們可以讓DF0共享F0的決策樹,這里在每個(gè)葉子節(jié) 點(diǎn)對DF0使用單高斯進(jìn)行建模。
- (B)第二種方法是,在得到DF0后,重新對DF0在HMM的框架下單獨(dú)進(jìn) 行訓(xùn)練。DF0有這單獨(dú)的決策樹以及時(shí)長模型。
音節(jié)層模型
離散余弦變換用于基頻參數(shù)化
- 離散余弦變換DCT已經(jīng)成功用于多種語言的基頻建模。DCT是一種線性可逆的變換,它可以將基頻曲線為一組余弦分量的加權(quán)和。
- [圖片上傳失敗...(image-96c8ae-1590825742301)]
- MGC處理:論文:CELP coding based on reel-cepstral analysis.
歌聲合成的關(guān)鍵
- 準(zhǔn)確的音高和時(shí)長
- 顫音是歌聲情感表達(dá)的關(guān)鍵,缺乏表現(xiàn)力的主要原因是因?yàn)榛l過于平滑。
- 基頻主要分為兩個(gè)部分的曲線:形狀曲線和顫音曲線
- 形狀曲線又可以分為音高曲線和殘差曲線
- 顫音的頻率一般為4HZ-8HZ
- 將基頻曲線通過一個(gè)截止頻率為3.5HZ低通濾波器來得到低頻部分作為形狀曲線,高頻部分作為顫音曲線。
- 樂譜的音高曲線可以直接由公式計(jì)算到
- f=440*2^(m-69)/2
- 殘差曲線 = 形狀曲線 - 樂譜曲線
- 形狀曲線又可以分為音高曲線和殘差曲線
殘差特征
- image
- image
顫音特征(vibrato)
顫音的幅值和速率
- [圖片上傳失敗...(image-a791b7-1590825742301)]
具備情感表達(dá)能力的歌者轉(zhuǎn)換
- 語音轉(zhuǎn)換關(guān)鍵是韻律特征和音質(zhì)特征
- 基頻特征轉(zhuǎn)換
- image
- 基頻特征轉(zhuǎn)換
- 歌者轉(zhuǎn)換技術(shù)使得利用己有的歌聲合成系統(tǒng)附加少量的特定 人的歌聲庫可以合成出該特定人的歌聲。由于錄制歌聲庫的工作量非常龐大, 因此歌者轉(zhuǎn)換技術(shù)非常有應(yīng)用價(jià)值。
- 從一個(gè)歌唱人轉(zhuǎn)換到另一個(gè)歌唱人的時(shí)候,如果有著不該變歌曲的調(diào)的要求,那么基頻是不能改變的。
基于聲學(xué)參數(shù)修改的語音轉(zhuǎn)歌聲的算法
- 主要修改3個(gè)聲學(xué)參數(shù):基頻、語音時(shí)長和頻譜包絡(luò)
- image
-
歌聲和語音的主要區(qū)別是基頻的差距,不是頻譜特征。
- 基頻代表說話人聲帶每次開啟和關(guān)閉的時(shí)間間隔,反映了聲調(diào)的變化?;l的大小反映了聲帶的大小、厚薄、松緊程度以及聲門上下之間的氣壓差的效應(yīng)等。
- 目前提取基頻的有利工具是world
- image
- 基頻分為兩個(gè)部分處理:基頻的跳變區(qū)、基頻的平穩(wěn)區(qū)。
- 基頻的擬合:
- image
- w叫是自然頻率;是阻尼系數(shù);k是系統(tǒng)的比例增益
- 歌唱聲音的頻譜包絡(luò)在3kHz附近有一個(gè)叫做“歌唱共振峰”的顯著峰值,
聲韻母表
- image
































