Parselmouth пакетный полный голосовой отчет - PullRequest
0 голосов
/ 15 февраля 2019

Мне было интересно, есть ли способ пакетной обработки аудиофайлов и генерации полных голосовых отчетов с использованием parselmouth или другой pythonic реализации praat.До сих пор мне удавалось получить только среднюю высоту звука, но я должен уметь рассчитывать общее количество импульсов и периодов, степень прерывистости голоса и мерцание.Если это невозможно с помощью Python, можно ли будет использовать скрипт Praat? голосовой отчет, сгенерированный праатом

1 Ответ

0 голосов
/ 17 марта 2019

[Отказ от ответственности: я являюсь автором упомянутой библиотеки Parselmouth]

Этот вопрос был задан и решен в чате Gitter для Parselmouth , но на будущееСсылка, это было решение, которое я предложил там:

Аналогичный вопрос задавался ранее в StackOverflow: Как автоматизировать голосовые отчеты для Praat , объясняя, как получить голосовой отчет без Praat 'Окно просмотра и редактирования (т. Е. С использованием объектов Sound, Pitch и PointProcess).

Итак, сначала вы получите эти три объекта: Звук, Звук, Высота звука,и импульсы PointProcess, возможно изменяя параметры, которые вы хотите иметь по-разному:

import parselmouth
sound = parselmouth.Sound("the_north_wind_and_the_sun.wav")
pitch = sound.to_pitch()
pulses = parselmouth.praat.call([sound, pitch], "To PointProcess (cc)")

После этого вы можете запросить различные количества, которые вы хотите извлечь по-разному.Например, количество импульсов в PointProcess может быть извлечено с помощью:

n_pulses = parselmouth.praat.call(pulses, "Get number of points")

И других:

n_periods = parselmouth.praat.call(pulses, "Get number of periods", 0.0, 0.0, 0.0001, 0.02, 1.3)
shimmer_local = parselmouth.praat.call([sound, pulses], "Get shimmer (local)...", 0.0, 0.0, 0.0001, 0.02, 1.3, 1.6)

Получение степени прерываний голоса несколько сложнее.Понятия не имею, почему у Praat нет команды, чтобы получить это.

Быстрый способ получить это в Python:) / sound.duration

Вы также можете найти строку, сообщающую этот процент, в выходной строке «Голосовой отчет»;см. https://stackoverflow.com/a/51657044/2043407

Если вы посмотрите на пользовательский интерфейс Praat, на самом деле нет кнопки «Получить медиану», поэтому эта строка не работает.Однако в Praat есть команда «Получить квантиль», поэтому я бы предложил

parselmouth.praat.call(pitch, "Get quantile", 0.0, 0.0, 0.5, "Hertz")

(то есть 0,5 - это 50% квантиль, т. Е. Медиана)

...