Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

little change to the project, then it works well #26

Open
chengqingshui opened this issue Nov 1, 2017 · 3 comments
Open

little change to the project, then it works well #26

chengqingshui opened this issue Nov 1, 2017 · 3 comments

Comments

@chengqingshui
Copy link

Hello, everyone!
I run the project, and found some problem, and change code as bellow, then it works well.
1, about the mfcc_batch_generator funtion, which generate a batch of sound feature data and labels, but in the trainning step, the data is not updated by the next() in the loop. So I add a new function mfcc_batch_generatorEx simaliar to mfcc_batch_generator in speech_data.py file:
def mfcc_batch_generatorEx(batch_size=10, source=Source.DIGIT_WAVES, target=Target.digits):
maybe_download(source, DATA_DIR)
if target == Target.speaker:
speakers = get_speakers()
batch_features = []
labels = []
files = os.listdir(path)

print("loaded batch of %d files" % len(files))
shuffle(files)
for wav in files:
    if not wav.endswith(".wav"): 
        continue
    wave, sr = librosa.load(path+wav, mono=True)
    if target==Target.speaker: 
        label=one_hot_from_item(speaker(wav), speakers)
    elif target==Target.digits:  
        label=dense_to_one_hot(int(wav[0]),10)
    elif target==Target.first_letter:  
        label=dense_to_one_hot((ord(wav[0]) - 48) % 32,32)
    else: 
        raise Exception("todo : labels for Target!")
    labels.append(label)
    mfcc = librosa.feature.mfcc(wave, sr)
    # print(np.array(mfcc).shape)
    mfcc = np.pad(mfcc,((0,0),(0,80-len(mfcc[0]))), mode='constant', constant_values=0)
    batch_features.append(np.array(mfcc))
return batch_features, labels 

2、 in demo.py file, generate all sound features and labels by using bellow
X, Y = speech_data.mfcc_batch_generatorEx(batch_size)
3、 in the training step, using code bellow:
with tf.Session() as sess:
model.fit(trainX, trainY, n_epoch=training_iters)#, validation_set=(testX, testY), show_metric=True,batch_size=batch_size)
_y = model.predict(X)
YY = [x.tolist() for x in Y]
corrent_prediction = tf.equal(tf.arg_max(_y,1), tf.arg_max(YY,1))
accuracy = tf.reduce_mean(tf.cast(corrent_prediction, tf.float32))
print("\n\ncorrent_prediction = " , sess.run(accuracy) )

model.save("tflearn.lstm.model")

@chengqingshui
Copy link
Author

Hello, everyone!

I run the project, and found some problem, and change code as bellow, then it works well.
1, about the mfcc_batch_generator funtion, which generate a batch of sound feature data and labels, but in the trainning step, the data is not updated by the next() in the loop. So I add a new function mfcc_batch_generatorEx simaliar to mfcc_batch_generator in speech_data.py file:

def mfcc_batch_generatorEx(batch_size=10, source=Source.DIGIT_WAVES, target=Target.digits):
maybe_download(source, DATA_DIR)
if target == Target.speaker:
speakers = get_speakers()
batch_features = []
labels = []
files = os.listdir(path)

print("loaded batch of %d files" % len(files))
shuffle(files)
for wav in files:
    if not wav.endswith(".wav"): 
        continue
    wave, sr = librosa.load(path+wav, mono=True)
    if target==Target.speaker: 
        label=one_hot_from_item(speaker(wav), speakers)
    elif target==Target.digits:  
        label=dense_to_one_hot(int(wav[0]),10)
    elif target==Target.first_letter:  
        label=dense_to_one_hot((ord(wav[0]) - 48) % 32,32)
    else: 
        raise Exception("todo : labels for Target!")
    labels.append(label)
    mfcc = librosa.feature.mfcc(wave, sr)
    # print(np.array(mfcc).shape)
    mfcc = np.pad(mfcc,((0,0),(0,80-len(mfcc[0]))), mode='constant', constant_values=0)
    batch_features.append(np.array(mfcc))
return batch_features, labels 

2、 in demo.py file, generate all sound features and labels by using bellow

X, Y = speech_data.mfcc_batch_generatorEx(batch_size)

3、 in the training step, using code bellow:

with tf.Session() as sess:
model.fit(trainX, trainY, n_epoch=training_iters)#, validation_set=(testX, testY), show_metric=True,batch_size=batch_size)
_y = model.predict(X)
YY = [x.tolist() for x in Y]
corrent_prediction = tf.equal(tf.arg_max(_y,1), tf.arg_max(YY,1))
accuracy = tf.reduce_mean(tf.cast(corrent_prediction, tf.float32))
print("\n\ncorrent_prediction = " , sess.run(accuracy) )

model.save("tflearn.lstm.model")

Sorry to the bad format, Thanks for all !

@AiJunXian
Copy link

Hi. I noticed that you ignored the Validation set in Model.fit function. Why? Can you please describe to me what's the exact process inside Model.fit function? Thanks

@raffaelbd
Copy link

IndentationError: expected an indented block.
i find this error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants