- Add filter-replace-utils for serializing and deserializing in the src/ui directory.
- Update CMakeLists.txt to include the new files in the target_sources.
- Update FindLibAvObs.cmake to read buildspec.json from the CMAKE_SOURCE_DIR.
- Update model-infos.cpp to include two new Whisper models.
- Add a new CMakeLists.txt file in the src/tests directory.
- Add localvocal-offline-test.cpp in the src/tests directory.
- Add clear_current_caption function in localvocal-offline-test.cpp.
* refactor: Update version to 0.3.5 and clear current caption in transcription filter callbacks
* feat: Refactor whisper-processing.cpp for improved VAD segmentation and token buffer thread
* feat: Update prebuilt Whispercpp version to 0.0.6
* refactor: Remove trailing whitespace in translation-language-utils.h
* refactor: Add case-insensitive flag to regex in set_text_callback
The code change adds the `std::regex_constants::icase` flag to the regex used in the `set_text_callback` function in `transcription-filter-callbacks.cpp`. This allows for case-insensitive matching when replacing filter words in the `str_copy` string.
Refactor the code to improve VAD segmentation and token buffer thread in whisper-processing.cpp
The code change refactors the `whisper-processing.cpp` file to improve the VAD (Voice Activity Detection) segmentation and token buffer thread. This aims to enhance the performance and accuracy of the transcription filtering process.
refactor: Add prepopulated filter options and corresponding map entries in FilterReplaceDialog
The code change adds prepopulated filter options, such as "English Swear Words," "English Hallucinations," and "Korean Hallucinations," to the `FilterReplaceDialog` UI. It also adds the corresponding map entries to the `filter_words_replace` map, allowing users to easily add predefined filter patterns and replacement values.
refactor: Update version to 0.3.5 and clear current caption in transcription filter callbacks
The code change updates the version to 0.3.5 and clears the current caption in the transcription filter callbacks. This ensures that the correct version is displayed and any previous captions are removed.
refactor: Remove trailing whitespace in translation-language-utils.h
The code change removes trailing whitespace in the `translation-language-utils.h` file, improving code readability and consistency.
* refactor: Add filter-replace-utils for serializing and deserializing filter words replacements
* refactor: Add filter-replace-utils for serializing and deserializing filter words replacements
* refactor: Add filter-replace-utils for serializing and deserializing filter words replacements
* Fix hangups and VAD segmentation
* feat: Add max_sub_duration field to transcription filter data
* chore: Update VAD parameters for better segmentation accuracy
* feat: Add segment_duration field to transcription filter data
* feat: Optimize VAD processing for better performance
* feat: Refactor token buffer thread and whisper processing
The code changes involve refactoring the token buffer thread and whisper processing. The token buffer thread now uses the variable name `word_token` instead of `word` for better clarity. In the whisper processing, the log message format has been updated to include the segment number and token number. These changes aim to improve the performance and accuracy of VAD processing, as well as add new fields to the transcription filter data.
* Refactor token buffer thread and whisper processing
* refactor: Update translation context in transcription filter
The code changes in this commit update the translation context in the transcription filter. The `translate_add_context` property has been changed from a boolean to an integer slider, allowing the user to specify the number of context lines to add to the translation. This change aims to provide more flexibility in controlling the context for translation and improve the accuracy of the translation output.
* refactor: Update last_text variable name in transcription filter callbacks
* feat: Add translation language utilities
This commit adds a new file, `translation-language-utils.h`, which contains utility functions for handling translation languages. The `remove_start_punctuation` function removes any leading punctuation from a given string. This utility will be used in the translation process to improve the quality of the translated output.
* feat: Update ICU library configuration and dependencies
This commit updates the configuration and dependencies of the ICU library. The `BuildICU.cmake` file has been modified to use the `INSTALL_DIR` variable instead of the `ICU_INSTALL_DIR` variable for setting the ICU library paths. Additionally, the `ICU_IN_LIBRARY` variable has been renamed to `ICU_IN_LIBRARY` for better clarity. These changes aim to improve the build process and ensure proper linking of the ICU library.
* refactor: Update ICU library configuration and dependencies
* refactor: Update ICU library configuration and dependencies
* refactor: Update ICU library configuration and dependencies
* refactor: Update ICU library configuration and dependencies
* refactor: Update ICU library configuration and dependencies
* refactor: Update ICU library configuration and dependencies
* refactor: Update ICU library configuration and dependencies
This commit updates the `BuildICU.cmake` file to set the `CFLAGS`, `CXXFLAGS`, and `LDFLAGS` environment variables to `-fPIC` for Linux platforms. This change aims to ensure that the ICU library is built with position-independent code, improving compatibility and security. Additionally, the `icuin` library has been renamed to `icui18n` to align with the naming convention. These updates enhance the build process and maintain consistency in the ICU library configuration.
* Fix `ModelDownloader` not being aware of child object deletions
* Delete `ModelDownloader` after it's done processing
Otherwise this is only deleted when OBS exits, effectively leaking
memory
* Protect logging with a mutex
Main thread and worker thread output could get interleaved weirdly
without this
* Move segments.json saving to different thread
This was taking a considerable amount of time, especially for longer
input files, reducing overall utilization
* Check whether offline test can push more data before waiting
* Fix offline test with large files
In
```
circlebuf_push_back(
&gf->input_buffers[c],
audio[c].data() +
frames_count * frame_size_bytes,
frames_size_bytes);
```
`frames_count * frame_size_bytes` would overflow with `int` on
a 4 hour file; using `size_t` (on a 64 bit platform) fixes that
* look at the front of the whisper buffer instead of the back
this should mostly not make a difference, but feels semantically
more correct
* Initialize `resampled_buffer` for offline tests
* Read relevant audio bytes
There are two issues here:
1. `line_size` may contain padding (didn't happen in my tests)
2. from: 2b5f000d3f:/libavutil/frame.h#l405
> For audio, only linesize[0] may be set. For planar audio, each
> channel plane must be the same size.
* log running time in addition to local time
* Run whisper test "as fast as possible"
This kind of behaves like libobs, where each chunk of audio is
inspected individually by VAD/whisper, until processing of either
takes longer than the window length, in which case audio continues
to stream in
* Only ever send a single chunk of audio
* Add additional files to tests copy command
* Use condition variable to signal input thread if available
* Only wait in whisper thread if input buffers are empty
* Add accessor for VAD window size in samples
* Feed buffered audio data to VAD in proper window sizes
* Wake whisper thread whenever audio is received
* Update silero VAD to v5
* Only reset VAD state between chunks of activity
* refactor: Update whisper model path and enable hipBLAS acceleration
* refactor: Update whisper model path and enable hipBLAS acceleration
* refactor: Update whisper model path and enable hipBLAS acceleration
* refactor: Update whisper model path and enable hipBLAS acceleration
* refactor: Update whisper model path and enable hipBLAS acceleration
* refactor: Update whisper model path and enable CoreML acceleration
* refactor: Enable partial transcription with a latency of 1000ms
* refactor: Update CMakePresets.json and buildspec.json
- Remove the "QT_VERSION" variable from CMakePresets.json for all platforms
- Update the "version" of "obs-studio" and "prebuilt" dependencies in buildspec.json
- Update the "version" of "qt6" dependency in buildspec.json
- Update the "version" of the project to "0.3.3" in buildspec.json
- Update the "version" of the project to "0.3.3" in CMakePresets.json
- Remove unused code in whisper-processing.cpp
* refactor: Add -Wno-error=deprecated-declarations option to compilerconfig.cmake
* refactor: Update language codes in translation module
* refactor: Add boolean flag for whisper model loaded status
* refactor: Improve handling of whisper model paths in transcription filter
* refactor: Update whisper model path and add flag for model loaded status
* refactor: Add transcription-filter-properties.cpp for managing filter properties
* refactor: Add translation_monitor to transcription filter
- Add translation_monitor to the transcription filter data structure
- Initialize and stop the translation_monitor in the transcription_filter_update function
- Update the send_caption_to_source function to use the translation_monitor for sending translated captions
- Clear the translation_monitor when disabling buffered output in the transcription_filter_update function
* refactor: Simplify UI and improve error handling in transcription filter
* refactor: Update translation option in transcription filter
- Update the translation option in the transcription filter to use a more concise label
- Remove unnecessary code related to file output in the transcription filter
- Improve the handling of whisper model paths in the transcription filter
- Set the default language to "auto" in the transcription filter properties
* refactor: Improve error handling in model-downloader.cpp and transcription-filter-callbacks.cpp
* refactor: Improve error handling in model-downloader.cpp and transcription-filter-callbacks.cpp
* refactor: Update model-downloader.cpp to use obs_module_config_path for retrieving the config folder path
- Replace the usage of obs_module_get_config_path with obs_module_config_path to retrieve the config folder path in model-downloader.cpp
- Add a check for a null config_folder and log an info message if it is null
- Convert the config_folder string to a wstring on Windows using MultiByteToWideChar
- Update the log messages to provide more descriptive information about the config models folder and the model folder existence in the config folder
- Use the updated config_folder_str in the std::filesystem::absolute function call
* Trigger Build
* refactor: Update model-downloader.cpp to use obs_module_config_path for retrieving the config folder path
* refactor: Fix bug in transcription filter callbacks
- Add a condition to check for null timestamps before saving the sentence to srt in the send_sentence_to_file function
- Remove unnecessary code in the set_text_callback function that checks for empty text after suppression
- Update the whisper_loop function to clear the current subtitle if the minimum subtitle duration has passed
- Update the file output option in the transcription filter to use the new "Save to File" label instead of "Text File output"
- Add a new boolean flag "save_to_file" in the transcription filter data structure to track the file output setting
- Update the code in transcription-filter-callbacks.cpp and transcription-filter.cpp to use the new flag for file output logic
- Update the properties and UI in transcription-filter-properties.cpp to reflect the changes
* refactor: Add filter-replace-dialog.cpp for filter and replace functionality
* refactor: Improve filter-replace-dialog.cpp for filter and replace functionality
* refactor: Update buffer_output_type translations in locale files
* refactor: Update buffer_num_chars_per_line translation in locale files
* refactor: Remove unused code related to buffer output type selection
* refactor: Update TokenBufferThread to use TokenBufferString for caption building
* refactor: Update TokenBufferThread to use TokenBufferString for caption building
* refactor: Improve remove_leading_trailing_nonalpha function in transcription-utils.cpp
* refactor: Set whisper language to English in transcription filter properties
* refactor: Update whispercpp dependency to version 0.0.3
* refactor: Add buffered output parameters for transcription filter
* refactor: Remove unused parameter in set_source_signals function
* refactor: Fix character splitting bug in TokenBufferThread
* refactor: Update buffer size and overlap size in whisper-processing.cpp
* refactor: Remove unused parameter in set_source_signals function
* refactor: Fix floating point precision issue in whisper-processing.cpp
* refactor: Improve remove_leading_trailing_nonalpha function in transcription-utils.cpp
* refactor: Update VAD threshold in transcription filter
* refactor: Update VAD threshold parameter name in silero-vad-onnx.h
* refactor: Update VAD threshold parameter name in silero-vad-onnx.h
* refactor: Update lock_guard parameter name in TokenBufferThread
Largely based on @umireon's [AUR build script](https://github.com/occ-ai/obs-localvocal/issues/62#issuecomment-1910708241), these steps worked for me on a
Gentoo Linux system as well, so I figured it might be helpful to add them to
the README.
I feel like some of this could be merged with the Ubuntu section above (which
might also in itself be applicable to Debian as well as Ubuntu), but for now
this should at least help people
* Update translation-utils.h, transcription-filter.h, whisper-model-utils.h, model-find-utils.h, and model-downloader.h
* Update create_context function to include ct2ModelFolder parameter
* fix: add fix_utf8 flag to transcription_filter_data struct
* Update create_context function to include ct2ModelFolder parameter
* Update read_text_from_file function to include join_sentences parameter
* fix: Update VadIterator::reset_states to include reset_hc parameter
* Update create_context function to include whisper_sampling_method parameter
* Update tests README with additional configuration options
* feat: Add function to find file in folder by regex expression
* refactor: Improve text conditioning logic in transcription-filter.cpp
* refactor: Improve text conditioning logic in transcription-filter.cpp
* chore: Update ctranslate2 dependency to version 1.2.0
* refactor: Improve text conditioning logic in transcription-filter.cpp
* chore: Update cmake BuildCTranslate2.cmake to disable -Wno-comma warning
* refactor: Update translation context in whisper-processing.cpp and translation-utils.cpp
* Update buffer size and overlap size in whisper-processing.h and default buffer size in msec in transcription-filter.cpp
* Update audio processing timestamp calculation in whisper-processing.cpp
* Update OBS plugin installation instructions for Linux
* Fix typo in update_whisper_model function name
* Update CTranslate2 and cpu_features dependencies
* Update CTranslate2 and cpu_features dependencies
* Update dependencies and fix special tokens handling
* Add BUILD_BYPRODUCTS to CMake build command
* Update version to 0.2.5 in buildspec.json