def create_files(wav, word_results, items, nbc): data = wav.get_one_channel_data() for i in word_results.keys(): starts = word_results[i]['starts'] ends = word_results[i]['ends'] num = 1 for k in range(0, len(starts)): file_name = 'word' + str(num) + "_" + str(i) + '.wav' file_items = data[starts[k] * items:ends[k] * items] if not nbc is None and use_nbc_for_vad: if len(file_items) > 10000 and nbc.get_class(nbc.get_classes(nbc.classify( WavFile(samples=WavFile.to_binary(file_items), sample_width=wav.sample_width, time=1)))) == "speech": WavFile.write(path_to_vad_results + file_name, file_items, 0) num += 1 else: if len(file_items) > 10000: WavFile.write(path_to_vad_results + file_name, file_items, 0) num += 1
def create_sin_test(time, sample_rate, file_name=None, amplitude=32767, freq_hz=100, is_plot=False): """ create test audio file with sin @param time: length of audio (seconds) @param sample_rate: sample rate (44100 Hz for example) @param file_name: name of file for save or None, if you don't wont to save file @param amplitude: max amplitude @param freq_hz: dominant frequency @param is_plot: flag for plot file data """ buf_size = sample_rate*time buffer = list(numpy.zeros(buf_size, int)) for i in range(buf_size): buffer[i] += int(amplitude * math.sin(float(2 * math.pi * i * freq_hz / sample_rate))) if is_plot: plotter = Plotter("Created Sin Test") plotter.add_sub_plot_data("data", buffer) plotter.sub_plot_all_horizontal() if not file_name is None: WavFile.write(file_name, buffer, time)