По пути tensorflow можно найти следующее замечание:
Упоминание stft в тестах: питоновский файлик
Файл - с классами, которые напоминают функции ниже
https://github.com/tensorflow/tflite-micro/tree/main/tensorflow/lite/experimental/microfrontend/lib
get_dataset.py
ds_train <- get_training_data(Flags) <-
<- get_preprocess_audio_func(model_settings,is_training=True, background_data=background_data)
get_preprocess_audio_func():
1. wav_decoder = tf.cast(next_element['audio'], tf.float32)
2. wav_decoder = wav_decoder/tf.reduce_max(wav_decoder)
3. wav_decoder = tf.pad(wav_decoder,[[0,desired_samples-tf.shape(wav_decoder)[-1]]])
4. scaled_foreground = tf.multiply(wav_decoder, foreground_volume_placeholder_)
5. padded_foreground = tf.pad(scaled_foreground, time_shift_padding_placeholder_, mode='CONSTANT')
6. sliced_foreground = tf.slice(padded_foreground, time_shift_offset_placeholder_, [desired_samples])
7. sliced_foreground = tf.clip_by_value(background_add, -1.0, 1.0)
8. stfts = tf.signal.stft(sliced_foreground, frame_length=model_settings['window_size_samples'],
frame_step=model_settings['window_stride_samples'], fft_length=None,
window_fn=tf.signal.hann_window)
Для tflite: tensorflow/tensorflow/lite/kernels/pad.cc
С++: tensorflow/tensorflow/core/ops/array_ops.cc
C++: tensorflow/tensorflow/lite/kernels/mul.cc
C++: tensorflow/tensorflow/lite/kernels/slice.cc
Из файла __init__
по пути D:\Jupyter-notebook\jupvenv\lib\python3.8\site-packages\tensorflow:
from tensorflow.python.ops.array_ops import pad_v2 as pad
from tensorflow.python.ops.math_ops import multiply
from tensorflow.python.ops.array_ops import slice
from tensorflow.python.ops.clip_ops import clip_by_value
from ._api.v2 import signal
Из файла __init__
по пути D:\Jupyter-notebook\jupvenv\lib\python3.8\site-packages\tensorflow\_api\v2\signal:
from tensorflow.python.ops.signal.spectral_ops import stft