Краткий ответ:
Чтобы ускорить разговор одного человека, используйте мою Sonic.java собственную реализацию Java моего алгоритма Sonic. Пример того, как его использовать, приведен в Main.Java . Версия на том же алгоритме на языке C используется Android AudioTrack. Для ускорения воспроизведения музыки или фильмов найдите библиотеку на основе WSOLA.
раздутый ответ:
Ускорение речи сложнее, чем кажется. Простое увеличение частоты дискретизации без настройки сэмплов приведет к тому, что колонки будут звучать как бурундуки. По сути, есть две хорошие схемы линейного ускорения речи, которые я слушал: схемы на основе фиксированных кадров, такие как WSOLA, и схемы с синхронным высотой звука, такие как PICOLA, которые используются Sonic для скоростей до 2X. Еще одна схема, которую я слушал, основана на БПФ, и IMO этих реализаций следует избегать. Я слышал слухи о том, что на основе FFT можно сделать хорошо, но ни одна версия с открытым исходным кодом, о которой я знаю, не была пригодна для использования в последний раз, когда я проверял, вероятно, в 2014 году.
Мне пришлось изобрести новый алгоритм для скоростей, превышающих 2X, поскольку PICOLA просто отбрасывает целые периоды основного тона, что хорошо работает, если вы не отбрасываете два периода основного тона подряд. Для скорости, превышающей 2х, Sonic смешивает порции сэмплов из каждого периода основного тона, сохраняя некоторую информацию о частоте каждого из них. Это хорошо работает для большинства речи, хотя некоторые языки, такие как венгерский, имеют настолько короткие части речи, что даже PICOLA искажает некоторые фонемы. Тем не менее, общее правило, согласно которому вы можете отбросить один период основного тона без искажения фонем, в большинстве случаев работает хорошо.
Синхронные по тональности схемы фокусируются на одном динамике и, как правило, делают этот динамик более четким, чем схемы с фиксированным кадром, за счет распечатки неречевых звуков. Тем не менее, улучшение синхронных схем основного тона по сравнению со схемами с фиксированным кадром трудно услышать на скоростях, меньших, чем приблизительно 1,5, для большинства динамиков. Это связано с тем, что алгоритмы с фиксированным кадром, такие как WSOLA, в основном эмулируют синхронные схемы основного тона, такие как PICOLA, когда имеется только один динамик, и для каждого кадра необходимо отбрасывать не более одного периода основного тона. В этом случае математика работает в основном так же, если WSOLA хорошо настроена на динамик. Например, если он способен выбрать звуковой сегмент +/- один кадр за раз, то фиксированный кадр 50 мс позволит WSOLA эмулировать PICOLA для большинства громкоговорителей с основной высотой тона> 100 Гц. Тем не менее, мужчина с глубоким голосом, скажем, 95 Гц, будет убит WSOLA с использованием этих настроек. Кроме того, части речи, например, в конце предложения, где существенно снижаются наши основные высоты тона, также могут быть разделены WSOLA, когда параметры не оптимально настроены. Кроме того, WSOLA обычно падает на скорости, превышающие 2X, где, как и PICOLA, он начинает сбрасывать несколько периодов основного тона подряд.
Что касается положительных моментов, WSOLA сделает большинство звуков, включая музыку, понятными, если не высококачественными. Принимать негармоничные многоголосные звуки и изменять скорость без существенных искажений невозможно с помощью схем перекрытия и добавления (OLA), таких как WSOLA и PICOLA.
Чтобы сделать это хорошо, потребуется разделить разные голоса, изменить их скорости независимо и смешать результаты вместе. Однако большая часть музыки достаточно гармонична, чтобы звучать нормально с WSOLA.
Оказывается, что низкое качество WSOLA при> 2X является одной из причин, по которой люди редко слушают на более высоких скоростях, чем 2X. Людям просто не нравится это. Когда Audible.com переключился с WSOLA на алгоритм, подобный Sonic, на Android, они смогли увеличить поддерживаемый диапазон скоростей с 2X до 3X. Я не слушал iOS в последние несколько лет, но с 2014 года Audible.com на iOS было жалко слушать с 3-кратной скоростью, так как они использовали встроенную iOS WSOLA библиотеку. С тех пор они, вероятно, исправили это.