Most likely your network is not learning. A few more things to try:

Remove the init_hidden  in LSTM. Zero initilizers are usually not a good idea.
Maybe your dataset has way too many spaces, hence the model is simply overfitting to spaces.
Try overfitting to a very small dataset (say just 1 batch of 15 chars), and train for a few epochs, to bring the loss value ~ 0 (say < e-05). This is a nice way to test your model is actually learning.