ValueError: Error when checking input: expected the_input to have 3 dimensions, but got array with shape (14174, 1)
Your inputs have different length so as suggested by @skrrrt, you should pad your data and apply a mask into your model.
The following pads all your input with 0. values so that all sequences have the same length.
from tensorflow.keras.preprocessing.sequence import pad_sequences
padded_inputs = pad_sequences(X, padding=&quot;post&quot;, dtype='float')

You can choose which value to use for padding with the parameter value=0.0 (documentation)
Then, add a masking layer just after your input layer in your model.
    # Main acoustic input
    input_data = Input(name='the_input', shape=(None, input_dim))
    masked_input = Masking(mask_value=0.0)(input_data)
    bidirectional_rnn = Bidirectional(GRU(units, activation=None,return_sequences=True, implementation=2, name='bidir_rnn'))(masked_input)

Refer to this tutorial for more information.