Я пытался написать преобразователь формант в реальном времени на платформе Teensy, используя линейное прогнозирующее кодирование LPC. Я использовал перекрытие БПФ и добавлял подходы, но задержка и качество голоса певцов-мужчин были просто неприемлемы.
В настоящее время я сталкиваюсь с проблемами с анализом LPC и извлечением формант, где данные оказываются постоянно неверными. Я приложил дамп данных и кода. Любая помощь будет принята с благодарностью!
Я пытался написать преобразователь формант в реальном времени на платформе Teensy, используя линейное прогнозирующее кодирование LPC. Я использовал перекрытие БПФ и добавлял подходы, но задержка и качество голоса певцов-мужчин были просто неприемлемы. В настоящее время я сталкиваюсь с проблемами с анализом LPC и извлечением формант, где данные оказываются постоянно неверными. Я приложил дамп данных и кода. Любая помощь будет принята с благодарностью! [code]#include // ARM DSP extensions. https://www.keil.com/pack/doc/CMSIS/DSP/html/index.html #include
class AudioEffectFormantShifter : public AudioStream_F32 { public: // Constructor AudioEffectFormantShifter(void) : AudioStream_F32(1, inputQueueArray_f32) { Serial.println("Starting formant shifter"); generateHanningWindow(window, FRAME_SIZE);
srand(1000); }
void AudioEffectFormantShifter::update(void) { audio_block_f32_t* audio_block = AudioStream_F32::receiveWritable_f32(); if (!audio_block) { Serial.println("No audio block received"); return; } //applyGain(audio_block, 10.0); -- Testing to see if modifying the audio block and transmitting works (it does!) processAudioBlock(audio_block); AudioStream_F32::transmit(audio_block); AudioStream_F32::release(audio_block); //Serial.println("Audio block transmitted"); }
void applyGain(audio_block_f32_t* audio_block, float gain) { for (int i = 0; i < AUDIO_BLOCK_SAMPLES; i++) { audio_block->data[i] *= gain; } }
void generateHanningWindow(float32_t* window, int size) { const float32_t pi = 3.14159265358979323846; for (int i = 0; i < size; i++) { window[i] = 0.5f * (1.0f - arm_cos_f32(2.0f * pi * i / (size - 1))); } }
Я пытался написать преобразователь формант в реальном времени на платформе Teensy, используя линейное прогнозирующее кодирование LPC. Я использовал наложение БПФ и добавлял подходы, но задержка и качество, когда дело касалось голоса певцов-мужчин,...
В Teensy 4.1 по умолчанию контакты i2C — 18 и 19. Из-за плохого планирования у нас есть компас, подключенный к нашему Teensy 4.1 через контакты 30 и 31 вместо 18 и 19 на печатной плате (так что это постоянно). При использовании библиотеки...
В Teensy 4.1 по умолчанию контакты i2C — 18 и 19. Из-за плохого планирования у нас есть компас, подключенный к нашему Teensy 4.1 через контакты 30 и 31 вместо 18 и 19 на печатной плате (так что это постоянно). При использовании библиотеки...
Я пишу программу с использованием Java и JavaFx на IntelliJ
У меня есть MacBook с macOS Sonoma 14.4
Когда я запускаю код с помощью Maven, у меня возникает такая проблема:
WARNING: Secure coding is not enabled for restorable state! Enable secure...