# -*- coding: utf-8 -*-
from nnmnkwii.util import example_audio_file,example_label_file
from scipy.io import wavfile
from scipy.signal import spectrogram
import librosa
import wave
import librosa.display
from IPython.display import Audio
import matplotlib.pyplot as plt
import numpy as np
from librosa import feature
def audio_(path):#nnmnkwii文档信息
fs, x = wavfile.read(path)
assert fs == 16000
librosa.display.waveplot(x) , sr=fs)#这里要求浮点型数据,否则报错
Audio(sig, rate=fs)
def audio_use(path):
fs, sig = wavfile.read(path)
print (fs, sig)
sig = sig/max(abs(sig))#这里进行归一化,之后为浮点型数据
plt.figure()
librosa.display.waveplot(sig , sr=fs)
plt.savefig("show.png")
def audio_use1(path):
fs, sig = wavfile.read(path)
print (fs, sig)
plt.figure()
librosa.display.waveplot(sig.astype(np.float32), sr=fs)#变为浮点型数据
plt.savefig("show1.png")
def pyworld_use(path):
import pyworld
fs, x = wavfile.read(path)
frame_period = 5 # ms
hop_length = int(0.001 * fs * frame_period)
x = x.astype(np.float64)
f0, timeaxis = pyworld.harvest(x, fs, frame_period=frame_period)
spectrogram = pyworld.cheaptrick(x, f0, timeaxis, fs)
aperiodicity = pyworld.d4c(x, f0, timeaxis, fs)
from nnmnkwii.preprocessing import trim_zeros_frames
spectrogram = trim_zeros_frames(spectrogram)
plt.figure()
librosa.display.specshow(np.log(spectrogram).T, sr=fs,
hop_length=hop_length, x_axis="time",
y_axis="linear", cmap="magma")
plt.savefig("show2.png")
def aligment_file(path,output):
from nnmnkwii.io import hts
path =(example_label_file())
labels = hts.load(path)
with open(output,"w") as f:
f.write(str(labels))
silence_indices = labels.silence_frame_indices()
trimmed_spectrogram = spectrogram[:labels.num_frames()]
silence_removed_spectrogram = np.delete(trimmed_spectrogram, silence_indices, axis=0)
librosa.display.specshow(np.log(silence_removed_spectrogram).T, sr=fs,
hop_length=hop_length, x_axis="time",
y_axis="linear", cmap="magma")
plt.savefig("show3.png")
def main():
path="audio/mono.wav"
output = "mono.lab"
#audio_use(path)
#audio_use1(path)
#pyworld_use(path)
aligment_file(path,output)
main()
参考:https://r9y9.github.io/nnmnkwii/latest/nnmnkwii_gallery/notebooks/00-Quick%20start%20guide.html