Commit Graph

220 Commits

Author SHA1 Message Date
Daniel Wolf a24fe8874c Added AutoJoin template parameter to timeline classes
Previously, timelines would always automatically join adjacent elements
if their values were equal. That behavior was usually desired for mouth
shapes, but not for phones, animation rules, etc.
2016-12-13 09:45:26 +01:00
Daniel Wolf 2eb0948c49 "Popping" mouth open without inbetweens 2016-12-07 19:28:22 +01:00
Daniel Wolf 727b1d1261 Tweaks to animation rules 2016-12-07 19:28:22 +01:00
Daniel Wolf 3cdc78e889 Using new, bidirectional animation algorithm
Also, some rule tweaks
2016-12-07 19:28:21 +01:00
Daniel Wolf 1e5a21dbfb Added timeline constructor overloads 2016-12-07 19:28:21 +01:00
Daniel Wolf 6d67f77f62 Added shape-related lookup functions 2016-12-07 19:28:21 +01:00
Daniel Wolf db368b4311 Better mouth shape descriptions 2016-12-07 19:28:21 +01:00
Daniel Wolf f7d4a70d3d Moved shape shorthand constants into their own file 2016-12-07 19:28:20 +01:00
Daniel Wolf 4614939183 Added implementation of std::experimental::make_array 2016-12-07 19:28:20 +01:00
Daniel Wolf 4e9a588c66 Using two-element shape rules instead of shape sets 2016-11-25 21:22:00 +01:00
Daniel Wolf 82a76c9971 Improved animation rules 2016-11-25 21:01:29 +01:00
Daniel Wolf a913fa113b Added animation rules 2016-11-25 21:01:29 +01:00
Daniel Wolf 8e1d1fbdd3 Unified acronym capitalization
See http://stackoverflow.com/a/27172000/52041
2016-11-16 11:56:52 +01:00
Daniel Wolf 3b599cc751 Fixed fallback shape for empty exports 2016-11-16 11:36:10 +01:00
Daniel Wolf 289b7ba56e Restructured rhubarb-exporters 2016-11-16 11:35:27 +01:00
Daniel Wolf 3e34425c11 Refactoring: Split code into multiple projects 2016-11-16 11:01:01 +01:00
Daniel Wolf c19ad1c8d0 Using biased language model to handle dialog more forgivingly
Using a fixed 0.1-0.9 ratio between default and dialog language model
2016-10-21 21:41:50 +02:00
Daniel Wolf 9cfe577612 Fixed bad config when creating language model from dialog 2016-10-21 21:17:17 +02:00
Daniel Wolf 529a32e1b2 Better animation of short pauses 2016-10-14 20:25:30 +02:00
Daniel Wolf 503ba9104a Treating schwa as a separate phone 2016-09-30 17:12:10 +02:00
Daniel Wolf 1f6f6d6175 Added convenience function Timed<T>.getDuration() 2016-09-29 12:06:47 +02:00
Daniel Wolf f5b7971f52 Refactoring: Replaced audio "length" with "duration" 2016-09-29 12:06:28 +02:00
Daniel Wolf f44baaa05f Improve noise detection heuristic 2016-09-29 12:06:06 +02:00
Daniel Wolf 760f6c2ce6 Refactoring and better logging 2016-09-29 10:44:34 +02:00
Daniel Wolf 750078618c Sharing audio buffer between operations 2016-09-26 13:11:01 +02:00
Daniel Wolf de05f69507 Fixed compiler warning 2016-09-23 21:15:55 +02:00
Daniel Wolf 2fdd98f5b3 Removed potentially unsafe conversion 2016-09-23 21:15:34 +02:00
Daniel Wolf 938079a75f Renamed phoneExtraction to phoneRecognition 2016-09-21 10:32:26 +02:00
Daniel Wolf 600b3429a7 No longer discarding "burnt" decoders
See https://sourceforge.net/p/cmusphinx/discussion/help/thread/f1dd91c5/#1d89/0491/7f0c/60fc
2016-09-21 10:28:31 +02:00
Daniel Wolf eea1eb381c Refactored ObjectPool to correctly handle custom deleters 2016-09-21 10:25:08 +02:00
Daniel Wolf d97c880754 Performing per-utterance cepstral mean normalization
See discussion in https://sourceforge.net/p/cmusphinx/discussion/help/thread/51e2979b/
2016-09-18 22:02:02 +02:00
Daniel Wolf f4f9ffe883 Logging bin path, hoping to crack that elusive segfault 2016-09-18 22:00:55 +02:00
Daniel Wolf cf13499158 Caching bin path 2016-09-18 22:00:08 +02:00
Daniel Wolf 0ab009e17a Workaround for off-by-one error in whereami library 2016-09-11 13:17:52 +02:00
Daniel Wolf 2607b9a12b Fixed Boost version check 2016-09-11 12:59:09 +02:00
Daniel Wolf c679b8fb71 Using different xml_writer_settings signature for old Boost versions 2016-09-11 11:40:17 +02:00
Daniel Wolf 261a768e0d Removed Boost.Predef since it's not available in Boost 1.54 2016-09-11 11:40:17 +02:00
Daniel Wolf d4b86357cf Using boost::optional<T>.get_value_or() instead of value_or() for old Boost versions 2016-09-11 11:40:16 +02:00
Daniel Wolf d98de34b98 Replaced calls to boost::optional<T>.value() with operator*
Boost 1.54 doesn't support value() yet, plus * is cleaner
2016-09-11 11:40:16 +02:00
Daniel Wolf 2aef178eb0 Better error messages for incompatible WAVE files 2016-09-10 21:19:12 +02:00
Daniel Wolf b95a3f621c Fixed Linux build 2016-08-31 22:21:53 +02:00
Daniel Wolf 8fd78d63cf Animating pauses only between words, not at start or end of recording 2016-08-11 16:28:04 +02:00
Daniel Wolf a632e7a3b3 Fixed TSV export
Exporter now terminates with shape X rather than A.
2016-08-11 15:49:51 +02:00
Daniel Wolf 81111ef96a Fixed infinite loop with short recordings 2016-08-11 15:45:16 +02:00
Daniel Wolf 78027ea63c Thread count can be limited via command-line argument 2016-08-11 10:29:01 +02:00
Daniel Wolf 206cde4658 Supporting noises (breathing, smacking, etc.) 2016-08-11 10:18:03 +02:00
Daniel Wolf bd1f8226ec Added TimeRange.trim() method 2016-08-11 10:16:50 +02:00
Daniel Wolf 734d06ad38 Disabling PocketSphinx's VAD
We're performing VAD ourselves
2016-08-10 20:46:32 +02:00
Daniel Wolf a851a76ce5 Minor improvements to animation rules 2016-08-10 20:13:05 +02:00
Daniel Wolf 8b025a3522 Fixed predictive mouth animation 2016-08-10 18:53:01 +02:00
Daniel Wolf 16892ae991 Fixed OS X build 2016-08-10 18:24:24 +02:00
Daniel Wolf b22378221f Better AH animation 2016-08-07 20:38:02 +02:00
Daniel Wolf c65c8b4eb3 Better animation of pauses in speech 2016-08-05 19:34:57 +02:00
Daniel Wolf 1c50ece142 Refactoring 2016-08-05 17:17:25 +02:00
Daniel Wolf b62fe8af98 Improved timing of bilabial stops ("B", "P") 2016-08-04 22:21:48 +02:00
Daniel Wolf c566ac56cc Suppressing log messages in console for non-debug builds 2016-08-04 21:02:40 +02:00
Daniel Wolf 229105a965 Fixed erratic progress display 2016-08-04 20:39:40 +02:00
Daniel Wolf 6888dadd04 Speedup through better multithreading
* Fixed excessive locking
* Using more threads for voice recognition
2016-08-04 19:39:43 +02:00
Daniel Wolf 1cb41b8309 Workaround for another kind of decoder corruption 2016-08-03 21:33:13 +02:00
Daniel Wolf 0a577d1947 Fixed audio resampling
Audio was cut off due to incorrect length calculation
2016-08-03 20:55:45 +02:00
Daniel Wolf f356855bbd Implemented tweening for smoother animation 2016-08-02 22:02:59 +02:00
Daniel Wolf 95d46ef0b7 Re-written animation code
* Still uses (almost) the same rules, but more powerful underlying concept
* Re-introduced shape H for "L" sounds
* Introduced shape X for idle position
2016-07-31 21:42:37 +02:00
Daniel Wolf 26cae93478 Refactored audio handling
Now audio clips can be passed around as const references
and don't carry state any more.
2016-07-27 21:58:37 +02:00
Daniel Wolf 799f334fa7 Using unique_ptr instead of raw pointers in object pool 2016-07-27 21:44:39 +02:00
Daniel Wolf b3b2366468 Re-written library code for parallel execution
The new implementation correctly re-throws exceptions on the calling thread
instead of terminating the application.
2016-07-27 21:44:39 +02:00
Daniel Wolf 5198ee9230 Made Lazy<T> copyable 2016-07-20 20:16:23 +02:00
Daniel Wolf 17b43ad205 Added class Lazy<T> 2016-07-19 21:33:07 +02:00
Daniel Wolf ddcadad710 Introduced user-defined literal "cs" for centiseconds
Now that ReSharper supports it (see https://youtrack.jetbrains.com/issue/RSCPP-14653)
2016-07-05 21:17:51 +02:00
Daniel Wolf 0447cbb4ff Refactored VAD multithreading 2016-06-30 20:52:29 +02:00
Daniel Wolf 8fa494fb77 Improved VAD quality via dry run 2016-06-30 20:42:36 +02:00
Daniel Wolf 6de7ba020a Fixed VAD error handling 2016-06-30 20:17:28 +02:00
Daniel Wolf ed27b8470c Workaround for PocketSphinx bug
See https://sourceforge.net/p/cmusphinx/discussion/help/thread/f1dd91c5/#7529
Also minor refactoring.
2016-06-30 20:06:38 +02:00
Daniel Wolf 2c0471e79f Improved lip animation for B/P and L sounds 2016-06-29 22:35:14 +02:00
Daniel Wolf 2d314f4bc7 Multithreaded recognition: refactoring and fixes
* Decoders are correctly released after use
* Determining optimal thread count for multithreading
2016-06-29 21:47:25 +02:00
Daniel Wolf f13449f810 Added thread info to logging 2016-06-29 21:47:25 +02:00
Daniel Wolf 75407dab54 Augmenting each detected voice activity to give recognizer some silence samples to work with 2016-06-29 21:47:25 +02:00
Daniel Wolf 2a5ed95698 Improved animation quality through new algorithm
Using "lazy" ruleset instead of 1:1 mapping from phones
2016-06-29 21:46:08 +02:00
Daniel Wolf 8c9466bcf3 Removed mouth shape H (special shape for 'L' sound) 2016-06-26 21:06:22 +02:00
Daniel Wolf 9bf8355742 Sped up recognition via multithreading 2016-06-26 21:06:21 +02:00
Daniel Wolf 3a0a38575f Sped up VAD via multithreading 2016-06-26 21:06:21 +02:00
Daniel Wolf 84097756c8 Added ThreadPool class 2016-06-26 14:02:17 +02:00
Daniel Wolf 0aeb35c42e Fixed deprecated library calls 2016-06-26 11:06:44 +02:00
Daniel Wolf c9b17e1937 Improved tokenization by taking dictionary into account 2016-06-25 21:52:04 +02:00
Daniel Wolf f275267ac7 Small VAD improvements
* RAII
* Slightly fewer false positives
2016-06-24 22:35:33 +02:00
Daniel Wolf faa3f2b4bb Fixed overflow with long audio files 2016-06-24 21:51:17 +02:00
Daniel Wolf c6c31a831c Using WebRTC for voice activity detection (VAD)
My simple power-based approach wasn't reliable enough.
2016-06-21 22:20:18 +02:00
Daniel Wolf 97f172282d Fixed off-by-one error in wave file reader 2016-06-21 21:47:08 +02:00
Daniel Wolf 0e00e58d91 Gracefully handling failed audio alignment 2016-06-21 19:20:27 +02:00
Daniel Wolf 944c374415 Migrated to latest CMU Sphinx version 2016-06-19 21:18:40 +02:00
Daniel Wolf b2f702c8f4 Fixed OS X build 2016-06-16 19:41:49 +02:00
Daniel Wolf 6c9612d2c3 Raised low-pass threshold to better cope with high-pitched voices 2016-06-15 20:14:51 +02:00
Daniel Wolf 4346552312 Improved speed of voice activity detection
... by factor 2 by removing second pass.
Also added voice activity detection to progress calculation.
2016-06-15 20:14:51 +02:00
Daniel Wolf c4b054176c Fixed WAVE file reader position calculation
The bug only showed through massive seek times.
2016-06-15 20:14:44 +02:00
Daniel Wolf 522f6c2019 Made audio stream handling safe for long streams 2016-06-15 20:14:43 +02:00
Daniel Wolf d1bbe8538e Added more logging 2016-06-15 20:14:43 +02:00
Daniel Wolf 542a5ee3d8 Added join function for strings 2016-06-15 20:07:51 +02:00
Daniel Wolf 1e29151974 Fixed string conversion for Timed<void> 2016-06-14 17:36:54 +02:00
Daniel Wolf 5cc13cb16f Improved error message 2016-06-14 17:36:18 +02:00
Daniel Wolf 0d488e8de2 Restored dialog option, this time based on language model
This approach should be more robust and error-tolerant.
2016-06-10 22:35:27 +02:00
Daniel Wolf 4ed5908627 Implemented US-English G2P using sound change rules 2016-06-03 20:02:34 +02:00