Rumah  >  Soal Jawab  >  teks badan

python - Bagaimana untuk menyatakan keamatan (kenyaringan) sekeping ucapan?

Saya ingin menganalisis intensiti (kenyaringan) pertuturan melalui sepotong ucapan.

Oleh kerana saya anjing kejuruteraan dan bukannya anjing sains, dan saya orang luar dalam analisis isyarat audio, saya hanya melihat FFT secara ringkas, jadi saya berasa tidak selamat tentang kaedah saya sendiri untuk menganalisis keamatan suara. Saya harap pakar dalam bidang ini dapat memberi tunjuk ajar. Terima kasih banyak-banyak! ! !

Berikut ialah proses saya mendapatkan data isyarat suara. Fail suara 123.wav berasal daripada transkoding mp3 yang disintesis oleh Baidu, jadi walaupun terdapat bunyi bising dalam suara ini, ia sepatutnya minimum. Tidak perlu menapisnya di sini (walaupun ia ditapis, saya tidak tahu apakah pekali penapis yang sepatutnya). Saya rasa sepatutnya tiada masalah pada ketika ini?

# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
import wave
f = wave.open("/home/dyan/123.wav", "rb")
# 读取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 读取波形数据
str_data = f.readframes(nframes)
f.close()
wave_data = np.fromstring(str_data, dtype=np.short)
# 在时间轴上画波形图
# 以上nchannels=1, sampwidth=2, framerate=16000
lenth=len(wave_data)
ti=lenth/16000.0
t = np.arange(0, ti, ti/lenth)
pl.plot(t,wave_data)
pl.show()

Graf gelombang (panjang masa ialah kira-kira 1.8s)
Saya berharap untuk memberitahu keamatan suara semasa memainkan suara ini, tetapi jelas kekerapannya terlalu cepat, dan ia tidak sepatutnya begitu pantas, contohnya, statistik sekali setiap 0.2s mungkin lebih sesuai.
Saya ada 2 idea, tetapi saya tidak pasti dan rasa tidak selamat:

1、每0.2s求振幅绝对值平均值。
2、每0.2s取振幅绝对值最大值。

Saya tidak faham pemprosesan isyarat audio, jadi saya tidak tahu sama ada salah satu daripada dua penyelesaian ini boleh mewakili keamatan pertuturan. Atau perlu menggunakan kaedah lain.

Ringkasnya, 2 soalan:

1、这样获取波形数据wav_data是否正确?
2、怎样表达这段语音的强度(响度)?
曾经蜡笔没有小新曾经蜡笔没有小新2681 hari yang lalu677

membalas semua(1)saya akan balas

  • 仅有的幸福

    仅有的幸福2017-05-18 11:01:32

    Bunyi ialah gelombang getaran mekanikal

    Keamatannya ialah amplitud

    Treble dan bass ialah kekerapan

    balas
    0
  • Batalbalas