音頻知識(shí)

音頻信息

時(shí)域音頻信息就是一個(gè)點(diǎn)隨著時(shí)間在振膜垂直方向振動(dòng)的情況,可表示為一個(gè)2D點(diǎn)集洽故,采樣率越高贝攒,就越接近連續(xù)曲線。

sample rate 采樣率 = 對(duì)這個(gè)點(diǎn)所在位置測(cè)量的頻率时甚,通常就是44100Hz隘弊。

bit rate 比特率 = 采樣率 * 量化精度 * 聲道數(shù),是指單位時(shí)間內(nèi)處理的數(shù)據(jù)量荒适。

buffer size = window size = 每次分析步驟所需的sample數(shù)梨熙。通常是1024或2048坤塞。

hop size = 兩個(gè)相鄰窗口之間錯(cuò)開(kāi)的sample數(shù)队寇,越小,則說(shuō)明時(shí)序解析度越高洁段,計(jì)算成本也越高陕壹。通常為buffer size的一半或四分之一质欲。

frame size = 幀長(zhǎng),媒體幀的長(zhǎng)度糠馆。

fps = 幀率嘶伟。一個(gè)幀可能包含多個(gè)采樣。音頻基本都是這樣又碌,視頻幀則一般一幀一采樣九昧。因此fps這個(gè)概念通常用于視頻和游戲領(lǐng)域。

bit depth = 位深度毕匀,每次采樣sample里包含的信息的bit數(shù)铸鹰。

channels = 聲道數(shù),雙聲道文件大小是單聲道兩倍皂岔。

<---- buf_size ---->
[.....step 0.......]
<-- hop -><---- buf_size ---->
          [.....step 1.......]
<-- hop -><- hop --><----buf_size ---->
                    [.....step 2.......]

|-------------------|------------------------>
t                   t+buf_size            (samples)

音頻的表示

根據(jù)傅立葉理論蹋笼,任何波形的周期函數(shù)都是不同振幅、不同相位的正弦波cost(wt)的疊加。無(wú)窮多個(gè)的正弦波甚至?xí)B加成標(biāo)準(zhǔn)矩形波(如果以時(shí)間為x軸姓建,振幅為y軸)诞仓。下圖是不同頻率振幅的正弦波疊加的直觀表現(xiàn)。


f1.gif
f2.gif

頻譜就是各頻率的振幅圖速兔,即下圖中的側(cè)視圖墅拭,頻域?yàn)閤軸,振幅為y軸涣狗〉瘢可以看到偶數(shù)參數(shù)的頻率相當(dāng)于cos(0t),是振幅為0的直線镀钓,不影響波形穗熬,只影響。

image

除了正面看的時(shí)域角度的波形圖丁溅,側(cè)面看的頻域角度的頻譜唤蔗,還有第三個(gè)角度,從上往下看的窟赏,以頻率為x軸妓柜,相位(與周期和初相相關(guān))為y軸。


image
image

各種傅立葉變換

傅立葉級(jí)數(shù)在時(shí)域是一個(gè)周期且連續(xù)的函數(shù)涯穷,在頻域則是一個(gè)非周期離散的函數(shù)棍掐。如下圖。


image

傅立葉變換就是將一個(gè)時(shí)域非周期(也可以理解為周期無(wú)限大)的連續(xù)信號(hào)轉(zhuǎn)換為在頻域非周期的連續(xù)信號(hào)拷况。連續(xù)信號(hào)作煌,就相當(dāng)于粒度無(wú)限細(xì)的從0到無(wú)窮大所有離散頻率的組合,比如下圖赚瘦。


image

很多時(shí)候在時(shí)域很難處理的事情粟誓,放到頻域就很簡(jiǎn)單。比如sin3x+sin5x的時(shí)域曲線很難畫(huà)出來(lái)起意,但頻域圖很容易畫(huà)鹰服,兩條豎線搞定。因此很多時(shí)候需要用傅立葉變換把時(shí)域表示轉(zhuǎn)換成頻域表示杜恰。又比如微分方程,在時(shí)域是微分和積分的操作仍源,到頻域變成乘除法心褐。

頻譜分析一般包括幅頻譜和相頻譜,不過(guò)常用的是幅頻譜笼踩。


FFT.jpg

模擬信號(hào)(1)通過(guò)FT變換到連續(xù)的頻域信號(hào)(2)逗爹,于是有了模擬信號(hào)的頻譜。
計(jì)算機(jī)只能處理數(shù)字信號(hào),需要將原模擬信號(hào)在時(shí)域離散化掘而,即在時(shí)域?qū)ζ溥M(jìn)行采樣挟冠,采樣脈沖序列如(3)所示,就是均勻地采樣袍睡。(1)×(3)=(5)知染,得到離散時(shí)間信號(hào)x[n],時(shí)域離散斑胜,但FT變換后頻譜依舊連續(xù)控淡。

連續(xù)的頻譜仍然不能被計(jì)算機(jī)處理,需要再進(jìn)行采樣止潘,得到(10)DFT(離散傅立葉變換)結(jié)果掺炭。著名的FFT就是快速計(jì)算DFT的方法,本質(zhì)并非速算FT凭戴,而是速算DFT涧狮。

(10)進(jìn)行逆DFT運(yùn)算,得到IDFT結(jié)果么夫,即為時(shí)域信號(hào)者冤,它與(5)的x[n]不同,是它的周期性拓延魏割。

DFS(離散傅立葉級(jí)數(shù))是針對(duì)離散周期信號(hào)提出的譬嚣,本質(zhì)和DFT一樣(截取主值空間做輸入)。對(duì)(9)這種離散時(shí)域信號(hào)進(jìn)行DFS即可得到(10)钞它。

STFT(短時(shí)距傅立葉變換)是FT的變形拜银,用于決定隨時(shí)間變化的信號(hào)局部部分的正弦頻率和相位。計(jì)算STFT的過(guò)程往往是將長(zhǎng)時(shí)間信號(hào)切割成數(shù)個(gè)較短的等長(zhǎng)信號(hào)沒(méi)然后分別再計(jì)算短程的傅立葉變換遭垛,從而描繪頻域與時(shí)域上的變化(相比之下尼桶,F(xiàn)T不能給出任何信號(hào)頻率隨時(shí)間改變的信息)。

能量譜(power spectrum)又叫能量譜密度锯仪,描述了信號(hào)或時(shí)間序列的能量如何隨頻率分布泵督,是原信號(hào)FT之后的平方。

倒頻譜(cepstrum)庶喜,或者說(shuō)倒譜是log(spectrum)進(jìn)行IFT(傅立葉逆變換)的結(jié)果小腊。存在complex cepstrum,power cepstrum久窟,phase cepstrum秩冈,real cepstrum這幾種。其中power cepstrum對(duì)人類語(yǔ)音分析很有用斥扛。原頻譜上肉眼難識(shí)別的周期性信號(hào)(指的是重復(fù)出現(xiàn)的邊頻帶)入问,或者說(shuō)成族的邊頻帶譜線簡(jiǎn)化為單根譜線。所謂邊頻帶就是以高頻信號(hào)特質(zhì)頻率為中心,對(duì)稱分布兩側(cè)的一對(duì)分量芬失。

Essentia

Essentia是一個(gè)C++音頻數(shù)據(jù)分析庫(kù)楣黍,既適用于研究人員在交互式環(huán)境下進(jìn)行實(shí)驗(yàn)和迅速迭代開(kāi)發(fā)(python接口),又支持優(yōu)化的提取器在生產(chǎn)集群和大數(shù)據(jù)集上高效運(yùn)轉(zhuǎn)(C++接口)棱烂。

Essentia還支持標(biāo)準(zhǔn)和流式兩種接口租漂,前者提供完整控制權(quán)限但代碼復(fù)雜,后者相反垢啼,能輕松把多個(gè)算法串起來(lái)形成提取器窜锯,但不夠靈活。

Essentia音頻算法

Envelop/SFX:

SFX是sound effects或special effects的簡(jiǎn)寫(xiě)芭析。

  1. AfterMaxToBeforeMaxEnergyRatio::輸入pitch數(shù)組锚扎,輸出最大pitch后的值與最大pitch前的值的比值。
  2. DerivativeSFX:輸入singal envelope馁启,輸出最大振幅后導(dǎo)數(shù)的加權(quán)平均值驾孔,以及最大振幅前最大導(dǎo)數(shù)。(導(dǎo)數(shù)是singal envelope的導(dǎo)數(shù))
  3. Envelope:輸入signal惯疙,輸出非對(duì)稱lowpass filter(低通濾波器)后的signal翠勉,signal envelope譯作信號(hào)包絡(luò)。
  4. FlatnessSFX:輸入singal envelope霉颠,輸出flatness coefficient对碌。
  5. LogAttackTime:所謂attack time就是指聲音達(dá)到對(duì)人耳可以聽(tīng)得到,到最高強(qiáng)度之間的時(shí)間蒿偎。輸入signal envelope朽们,輸出logAttackTime,attackStart诉位,attackStop骑脱。

Filters

濾波器的輸入都是signal,輸出也都是過(guò)濾后的signal苍糠。

  1. AllPass:bandwidth叁丧,cutoffFrequency,order岳瞭,sampleRate拥娄。基于1階或2階IIR(Infinite Impulse Response)瞳筏。
  2. BandPass:基于2階IIR稚瘾。
  3. DCRemoval:基于1階IIR。移除DC offset乏矾。
  4. Equaloudness:人耳對(duì)相同loudness不能感知所有頻段孟抗,為此,信號(hào)需要做處理钻心。
  5. HighPass:參數(shù)cutoffFrequency凄硼,sampleRate〗莘校基于1階IIR摊沉。
  6. MaxFilter:參數(shù)causal(bool,true時(shí)window再當(dāng)前值之后痒给,false時(shí)則以當(dāng)前值為中心)说墨,width(窗口大小,中心模式下必須為奇數(shù))苍柏。

有兩種濾波器:FIR & IIR尼斧。FIR適合對(duì)相位敏感的圖像處理和數(shù)據(jù)傳輸,IIR適合量相對(duì)小且幅頻特性精度高的語(yǔ)音信號(hào)试吁。

image

Input/Output

  1. AudioLoader:輸入audio stream棺棵,filename,輸出audio熄捍,sampleRate烛恤,nrChannels,md5余耽,bitRate缚柏,codec。支持所有FFmpeg支持的格式:wav碟贾,aiff币喧,flac,ogg缕陕,mp3粱锐。
  2. EasyLoader:輸入audio stream,filename扛邑,downmix怜浅,endTime,replayGain蔬崩,sampleRate恶座,startTime,輸出audio(real vector)沥阳。先讀出音頻文件的raw data跨琳,downmix到mono,并用replayGain做normalization桐罕,最后如果給定的采樣率與輸入不符脉让,則以給定的采樣率重新采樣桂敛。
  3. MonoLoader:輸入audio stream,downmix(對(duì)立體聲的選項(xiàng)溅潜,可選左术唬,右,混)滚澜,filename粗仓,sampleRate,輸出audio设捐。先讀取raw data借浊,再downmix(所謂downmix就是將左聲右聲道、中聲道萝招、左環(huán)繞蚂斤、右環(huán)繞這些聲道以一種合理的方式合并到單聲道m(xù)ono或立體聲stereo) to moto(單聲道),最后如果給定的采樣率與輸入不符槐沼,則以給定的采樣率重新采樣橡淆。
  4. AudioWriter:輸入audio信號(hào)(stereosample vector),bitrate母赵,filename逸爵,format,sampleRate凹嘲。將立體聲信號(hào)編碼形成音頻文件师倔。

Standard

  1. AutoCorrelation:輸入real vec,輸出自相關(guān)vec周蹭。所謂自相關(guān)指的是同一個(gè)序列中有一定間隔的兩段數(shù)據(jù)之間的相關(guān)性趋艘。
  2. BPF:實(shí)現(xiàn)一個(gè)斷點(diǎn)函數(shù)(break point function),在離散的x凶朗、y軸坐標(biāo)系的點(diǎn)集之間進(jìn)行l(wèi)inear interpolation(線性插值瓷胧,一種curve fitting方法,用linear polynomials棚愤,即線性多項(xiàng)式表達(dá)式搓萧,在已知點(diǎn)集的范圍內(nèi)構(gòu)造新的點(diǎn)),使之連續(xù)宛畦。
  3. BinaryOperator:對(duì)兩個(gè)數(shù)組進(jìn)行基本的binary算術(shù)運(yùn)算瘸洛。
  4. Clipper:將輸入信號(hào)clip,剪掉過(guò)大和過(guò)小的值次和。


    Clipping
  5. ConstantQ:用FFT將一個(gè)數(shù)據(jù)序列轉(zhuǎn)化到頻域frequency domain反肋。CrossCorrelation:兩個(gè)信號(hào)的互相關(guān)性,即相似度踏施。計(jì)算方法是sliding點(diǎn)乘石蔗,或sliding inner-product罕邀,用表示。(fg)[n]就是將f函數(shù)的復(fù)共軛(complex conjugate)與g函數(shù)橫坐標(biāo)偏移n后的值乘起來(lái)养距,然后橫坐標(biāo)從負(fù)無(wú)窮到正無(wú)窮所有這些乘積加起來(lái)的值燃少,度量了n這個(gè)offset上二者的相似度,毫無(wú)疑問(wèn)重合時(shí)達(dá)到峰值铃在。這個(gè)函數(shù)本質(zhì)上和兩個(gè)函數(shù)的卷積很像。Autocorrelation本質(zhì)上就是自己與自己的cross-correlation碍遍。
    discrete cross-correlation

    convolution
  1. DCT:計(jì)算Discrete Cosine Transform離散余弦變換定铜,用于將信號(hào)壓縮,將空域信號(hào)轉(zhuǎn)換到頻域上怕敬,具有良好的去相關(guān)性性能揣炕,是無(wú)損的,對(duì)稱的东跪。


    dct 1d

    其中畸陡,f(i)為原始信號(hào),N為點(diǎn)數(shù)虽填,c(u)是一個(gè)補(bǔ)償系數(shù)丁恭。


    dct 2d

    二維DCT就是在一維基礎(chǔ)上再做一次DCT。
  2. FFT:實(shí)際上是計(jì)算positive complex short-term Fourier transform斋日,即STFT牲览。

  3. FrameCutter:將input buffer裁剪到各個(gè)幀中。最后不滿的幀用0填滿恶守,也可以直接舍棄第献。輸入frameSize,hopSize兔港,是否startFromTimeZero庸毫,丟棄過(guò)小的幀的閾值。輸出frame(real vec)衫樊。

  4. MonoMixer:將信號(hào)downmix為單聲道飒赃。

  5. Multiplexer:輸入number of values或frames,輸出一個(gè)vector科侈。

  6. NSGConstantQ:輸入frame(real vec)盒揉,輸出constq,constqdc(DC band transform)兑徘,constqnf(Nyquist band transform)刚盈。用非靜態(tài)Gabor frame計(jì)算constant Q transform。

  7. NoiseAdder:給輸入信號(hào)里添加噪聲挂脑,可設(shè)置分貝dB等級(jí)與隨機(jī)種子藕漱。

  8. PeakDetection:探測(cè)數(shù)組的局部峰值(可設(shè)置閾值欲侮,必須大于它的才算peak),返回所有peak位置肋联。

  9. RealAccumulator:輸入信號(hào)威蕉,輸出一個(gè)累加后的結(jié)果,存在單個(gè)vector里(單frame)橄仍。

  10. Resample:重新采樣韧涨,轉(zhuǎn)變?yōu)橄胍牟蓸勇剩贿^(guò)必須保證essentia在編譯時(shí)選了Real=float侮繁,否則會(huì)報(bào)錯(cuò)虑粥。

  11. Scale:按比例縮放聲音,同時(shí)加上clipping機(jī)制宪哩。

  12. Slicer:給出幾個(gè)起止時(shí)間娩贷,將音頻信號(hào)分成若干個(gè)segments。

  13. Spline:數(shù)學(xué)上锁孟,spline指的是多項(xiàng)式表達(dá)式分段定義出的特殊函數(shù)彬祖,常用于插值,因?yàn)閟pline interpolation可以用很低degree的多項(xiàng)式擬合出大體上近似的結(jié)果品抽。


    spline of three cubic polynomials
  14. StereoMuxer:輸入左储笑、右聲道的信號(hào),輸出立體聲信號(hào)圆恤。

  15. StereoTrimmer:從立體聲信號(hào)里截取一段南蓬。

  16. Welch:用Welch方法估算power spectral density(即前文里的能量譜,或能量譜密度)哑了。

  17. Windowing:window函數(shù)又稱tapering function或apodization function赘方,將某個(gè)選定區(qū)間之外的部分歸零。通常就是選定接近max的地方弱左,以之為中心窄陡。數(shù)學(xué)上,任何函數(shù)與window函數(shù)相乘拆火,結(jié)果都會(huì)導(dǎo)致選定區(qū)域之外歸零跳夭,選定區(qū)域內(nèi)則變成"view through the window"。

  18. ZeroCrossingRate:計(jì)算一個(gè)音頻信號(hào)的zero-crossing rate们镜,指的是正負(fù)符號(hào)變化的頻率币叹。可以用來(lái)給percussive sounds(打擊樂(lè))分類模狭。

Special

  1. Power Spectrum:計(jì)算能量譜颈抚。

  2. Panning:比較左右聲道的頻譜,刻畫(huà)panorama(全景) distribution嚼鹉。主要用于音樂(lè)種類分類贩汉。

  3. MelBands:施加一個(gè)由根據(jù)mel scale分布的若干等面積三角過(guò)濾器組成的頻域上的filterbank驱富。

  4. MaxMagFreq:計(jì)算頻譜中最大magnitude的頻率。頻譜中至少又2個(gè)頻率匹舞。

  5. MFCC:輸入頻譜褐鸥,輸出mfcc(mel frequency cepstrum coefficients)與mel bands的能量。

  6. LogSpectrum:用log分布的frequency bins計(jì)算頻譜赐稽。

  7. LPC:計(jì)算Linear Predictive Coefficients & associated reflection coefficients叫榕。它是最強(qiáng)大的語(yǔ)音分析技術(shù)之一,能以低bit rate提供高度準(zhǔn)確的speech parameter estimates姊舵,廣泛應(yīng)用于語(yǔ)音編碼與語(yǔ)音合成晰绎。

  8. HFC:計(jì)算頻譜的High Frequency Content。高頻內(nèi)容度量是一種簡(jiǎn)單的度量蠢莺。


    i為magnitude
  9. GFCC:計(jì)算頻譜的Gammatone-frequency cepstral coefficients,與MFCC等價(jià)零如,但用了一個(gè)在Equivalent Rectangular Bandwidth上scale的gammatone filterbank躏将。

  10. FrequencyBands:計(jì)算頻譜的矩形頻帶(Frequency band,頻譜中的一個(gè)區(qū)間考蕾,由低頻下限與高頻上限界定)的能量祸憋。

  11. Flux:計(jì)算頻譜通量。頻譜(幅度譜)的通量被定義為兩個(gè)連續(xù)幀之間差別的L2-norm或L1-norm肖卧。

  12. FlatnessDB:計(jì)算一個(gè)數(shù)組的flatness蚯窥,即geometric mean與arithmetic mean的比值。

  13. EnergyBandRatio:計(jì)算[startFreq, endFreq]區(qū)間內(nèi)頻譜能量占總能量的比例塞帐。

  14. EnergyBand:計(jì)算一個(gè)給定的頻帶[startHz,endHz]內(nèi)能量拦赠。

  15. ERBBands:計(jì)算一個(gè)頻譜的各個(gè)ERB頻帶的能量。ERB即Equivalent Rectangular Bandwidth葵姥,給出一個(gè)近似人類聽(tīng)覺(jué)的濾波器帶寬組荷鼠。

  16. BarkBands:計(jì)算一個(gè)頻譜的Bark頻帶的能量。Barkhausen是歷史上最初提出對(duì)音量進(jìn)行主觀度量的人榔幸,他提出了一種頻帶scale允乐,沒(méi)有mel scale流行。


    bark scale
  17. BFCC:計(jì)算一個(gè)頻譜的Bark Frequency cepstrum coefficients削咆。

  18. Spectrum:計(jì)算一個(gè)frame的頻譜(幅頻譜)牍疏。

  19. SpectralWhitening:讓信號(hào)的頻譜更一致、統(tǒng)一拨齐,讓autocorrelation更窄鳞陨。


    whitening

    在音頻領(lǐng)域,可以集中音效瞻惋,減少SNR(signal-to-noise ratio)炊邦,傾向于讓頻率變高编矾,可能用于pop music中的complex mixture,主要還是用于提高onset(音符或聲音的開(kāi)端馁害、端點(diǎn)) detection函數(shù)的性能窄俏。

  20. StrongPeak:計(jì)算一個(gè)頻譜的Strong Peak,即max peak的magnitude與該peak高于一定閾值的頻帶寬的比值碘菜。很窄的頻率帶寬上的peak才足夠"pronounced"凹蜈,足夠強(qiáng)。

Rhythm

  1. BeatTrackerDegara:估計(jì)節(jié)拍位置忍啸。
  2. Beatogram:通過(guò)BeatsLoudness算法得到loudness矩陣仰坦,根據(jù)它過(guò)濾,留下最顯著的節(jié)拍頻帶计雌。
  3. Danceability:估計(jì)一個(gè)音頻信號(hào)的danceability悄晃,算法基于DFA(Detrended Fluctuation Analysis)。
  4. BpmHistogram:BPM是beats per minute凿滤。估算pulse BPM值與時(shí)間位置妈橄。

Essentia標(biāo)準(zhǔn)模式

如果想要處理下面這個(gè)流程:
Audio → FrameCutter → Windowing → Spectrum → MFCC → Aggregate(mean/var) → Output.

Essentia的調(diào)用步驟如下:

  1. 初始化,essentia::init()翁脆。
  2. 定義一些變量:pool(用于存放最終結(jié)果)眷蚓,sampleRate(采樣率,單位一般用Hz)反番,frameSize沙热,hopSize。
  3. 用AlgorithmFactory創(chuàng)建一些算法:audio=MonoLoader(filename罢缸,sampleRate), fc=FrameCreator(frameSize篙贸,hopSize),w=Windowing(type=blackmanharris63)枫疆,spec=Spectrum歉秫,mfcc=MFCC。
  4. 創(chuàng)建vector<Real> audioBuffer作為容器养铸,作為Audio → FrameCutter過(guò)程中Audio的輸出和FrameCreator的輸入雁芙。同理創(chuàng)建其他步驟間的臨時(shí)容器,以及最后一部的輸出容器钞螟,都是Real型vector兔甘。
  5. 先audio->compute(),開(kāi)始不斷加載音頻數(shù)據(jù)鳞滨。
  6. 然后在一個(gè)while(true)循環(huán)里洞焙,先調(diào)用fc->compute,F(xiàn)rameCutter的輸出容器如果非空則說(shuō)明音頻未結(jié)束,繼續(xù)處理澡匪,后面依次調(diào)用w熔任、spec、mfcc的compute唁情,并在最后在pool中添加這個(gè)循環(huán)里算出來(lái)的最終產(chǎn)物疑苔。
  7. 新建一個(gè)aggrPool,新建PoolAggregator(mean甸鸟,var惦费,min,max)算法抢韭,以原來(lái)的pool為輸入薪贫,aggrPool為輸出,compute刻恭,算出mean瞧省,var,min鳍贾,max等度量值鞍匾。
  8. 新建YamlOutput(filename)算法,將輸入設(shè)為pool贾漏,compute候学。
  9. 善后藕筋,delete各種算法纵散,最后essentia::shutdown。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隐圾,一起剝皮案震驚了整個(gè)濱河市伍掀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌暇藏,老刑警劉巖蜜笤,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盐碱,居然都是意外死亡把兔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門瓮顽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)县好,“玉大人,你說(shuō)我怎么就攤上這事暖混÷乒保” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)晾咪。 經(jīng)常有香客問(wèn)我收擦,道長(zhǎng),這世上最難降的妖魔是什么谍倦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任塞赂,我火速辦了婚禮,結(jié)果婚禮上剂跟,老公的妹妹穿的比我還像新娘减途。我一直安慰自己,他們只是感情好曹洽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布鳍置。 她就那樣靜靜地躺著,像睡著了一般送淆。 火紅的嫁衣襯著肌膚如雪税产。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天偷崩,我揣著相機(jī)與錄音辟拷,去河邊找鬼。 笑死阐斜,一個(gè)胖子當(dāng)著我的面吹牛衫冻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谒出,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼隅俘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了笤喳?” 一聲冷哼從身側(cè)響起为居,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杀狡,沒(méi)想到半個(gè)月后蒙畴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呜象,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年膳凝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恭陡。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹬音,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出子姜,到底是詐尸還是另有隱情祟绊,我是刑警寧澤楼入,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站牧抽,受9級(jí)特大地震影響嘉熊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扬舒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一阐肤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讲坎,春花似錦孕惜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瓮栗,卻和暖如春削罩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背费奸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工弥激, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愿阐。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓微服,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缨历。 傳聞我的和親對(duì)象是個(gè)殘疾皇子以蕴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容