Рейтинг:1

Почему mpg321 иногда теряет начало звука?

флаг vn

Я использую Lubuntu 20.04 на Raspberry Pi 3B.

Я пытаюсь использовать gtts-cli (программа преобразования текста в речь) для создания звука напрямую:

gtts-cli "Почти ни одна функция современного компьютера не работает должным образом" | миль на галлон321 -
Высокопроизводительный аудиоплеер MPEG 1.0/2.0/2.5 для уровней 1, 2 и 3.
Версия 0.3.2-1 (25.03.2012). Автор и авторские права Джо Дрю,
теперь поддерживается Нанакосом Хризостомосом и другими.
Использует код от разных людей. Смотрите 'README' для получения дополнительной информации!
НА ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПОСТАВЛЯЕТСЯ АБСОЛЮТНО НИКАКИХ ГАРАНТИЙ! ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК!
tcgetattr(): неподходящий ioctl для устройства

Воспроизведение MPEG-потока из - ...
MPEG 2.0 уровень III, 32 кбит/с, 24000 Гц моно
                                                                            
[0:03] Расшифровка - закончена.
Ошибка сегментации

Иногда это работает, а иногда нет. Когда это не работает, я слышу либо щелчок, либо скрежет, либо скрежет, за которым следует последняя часть звука. Это заставляет меня думать, что иногда mpg321 пропускает первую часть звука или каким-то образом искажает его. Даже при правильном воспроизведении всего звука возникает ОШИБКА СЕГМЕНТАЦИИ.

Я провел расследование. Во-первых, чтобы исключить gtts-cli как источник проблемы, я записал с него вывод в формате mp3 и отправил его на mpg321. например

gtts-cli "Этого достаточно, чтобы свести вас с ума!" -о тест.mp3
кот тест.mp3 | миль на галлон321 -
Высокопроизводительный аудиоплеер MPEG 1.0/2.0/2.5 для слоев 1, 2 и 3.
Версия 0.3.2-1 (25.03.2012). Автор и авторские права Джо Дрю,
теперь поддерживается Нанакосом Хризостомосом и другими.
Использует код от разных людей. Смотрите 'README' для получения дополнительной информации!
НА ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПОСТАВЛЯЕТСЯ АБСОЛЮТНО НИКАКИХ ГАРАНТИЙ! ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК!
tcgetattr(): неподходящий ioctl для устройства

Воспроизведение MPEG-потока из - ...
MPEG 2.0 уровень III, 32 кбит/с, 24000 Гц моно
                                                                            
[0:03] Расшифровка - закончена.
Ошибка сегментации

Я получаю тот же эффект. Иногда работает, а иногда пропускает все или начало звука. Также всегда есть ошибка сегментации.

Я проверил, связана ли проблема с вводом данных в mpg321 из стандартного ввода, используя файл напрямую:

тест mpg321.mp3
Высокопроизводительный аудиоплеер MPEG 1.0/2.0/2.5 для слоев 1, 2 и 3.
Версия 0.3.2-1 (25.03.2012). Автор и авторские права Джо Дрю,
теперь поддерживается Нанакосом Хризостомосом и другими.
Использует код от разных людей. Смотрите 'README' для получения дополнительной информации!
НА ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПОСТАВЛЯЕТСЯ АБСОЛЮТНО НИКАКИХ ГАРАНТИЙ! ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК!

Воспроизведение MPEG-потока из test.mp3...
MPEG 2.0 уровень III, 32 кбит/с, 24000 Гц моно

Это по-прежнему пропускает звук в начале, но НЕ приводит к ошибке сегментации.

Мой звук идет на USB-выход Respeaker. Чтобы исключить вероятность того, что проблема связана с драйвером или воспроизведением звука после mpg321, я попробовал:

temp.wav

Это играет идеально и стабильно каждый раз.

Затем я установил и попробовал mpg123 (вместо mpg321). Результаты были похожи, но я думаю, что немного хуже, чем mpg321.

Пробовал переустанавливать mpg321 - без изменений.

Что не так, и что более важно, как я могу это исправить?

muru avatar
флаг us
Ваш тест MP3 на самом деле не устранил gtts-cli как источник ошибки, AFAICT (если только эта команда не выводит этот `temp.wav`). Это все еще некоторый вывод из gtts-cli, который вы затем косвенно передаете в mpg321. Этот вывод может быть поврежден и привести к непредсказуемому поведению mpg321.
флаг vn
@muru файл был «test.mp3», и он был выведен из gtts-cli. Впоследствии я использовал temp.wav с aplay, просто чтобы проверить, работают ли звуковые драйверы. Я отредактировал вопрос, чтобы показать, что я использую Raspberry Pi 3B, потому что я только что попробовал gtts-cli/mpg321 на машине с процессором Intel, и он отлично работает.
muru avatar
флаг us
Извините, мой комментарий пытался сказать две вещи сразу и перепутался. У вас есть один тест, очевидно независимый от `gtts-cli`, — тот, который использует `temp.wav`. Он ничего не говорит о `mpg321` или `gtts-cli`, потому что он не проверяет ни то, ни другое. У вас есть еще один тест с использованием MP3 из `gtts-cli` с `mpg321`. Однако этот вывод по-прежнему исходит от gtts-cli, поэтому нельзя точно сказать, что проблема в mpg321, а не в gtts-cli.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.