Евгений Столов - Обнаружение скрытых эмоций в голосе
Название: | Обнаружение скрытых эмоций в голосе | |
Автор: | Евгений Столов | |
Жанр: | Самиздат, сетевая литература | |
Изадано в серии: | неизвестно | |
Издательство: | SelfPub | |
Год издания: | 2023 | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Обнаружение скрытых эмоций в голосе"
Заманчивая цель. Создать прибор, с помощью которого можно узнать, говорит ли ваш собеседник правду. Эта задача была актуальной как много веков назад, так и в настоящее время. В книге представлены алгоритмы, с помощью которых эта задача может решаться методами цифровой обработки сигналов. Фактически, речь идет об обнаружении участков речевого файла, отклоняющихся от типичных участков в этом файле. Это означает, выделяются участки, отвечающие эмоциональному возбуждению говорящего. Природу этого возбуждения программа не определяет.
К этой книге применимы такие ключевые слова (теги) как: Самиздат,информационные технологии (IT),эмоции,эмоциональные состояния,тайная информация,информатика
Читаем онлайн "Обнаружение скрытых эмоций в голосе". [Страница - 3]
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (7) »
Изменение эмоционального состояния может проявиться во время произнесения очередной фразы в потоке или даже при произнесении отдельного слова в фразе. Нашей ближайшей целью является научиться выделять отдельные слова в потоке и формировать из них фразы. Рассмотрим более детально произвольный отрезок обычного речевого файла.
Видно, что этот отрезок делится на небольшие фрагменты повышенной мощности и промежутки между ними. Отмеченные промежутки это либо заполненные шумом от дыхания интервалы (интервалы между словами или отдельными слогами), либо переходные процессы в речи. Переходный процесс это промежуток между концом гласного и началом согласного или наоборот. Назовем такие интервалы шумовыми интервалами (ШИ), а оставшиеся — информационными (ИнИ). Естественно считать словом промежуток в речевом файле между двумя последовательными ШИ. На самом деле ситуация более сложная, поскольку ШИ может появиться и между двумя слогами одного слова либо в позиции переходного процесса. В этом случае такой интервал должен быть проигнорирован. Следует отметить, что выделением информационных фрагментов в речевом файле занимались многие исследователи. Так или иначе, для этой цели используется мощность сигнала, однако, установка пределе для этой мощности и является предметом исследования. Мы берем за основу выделение ШИ и последующий анализ их распределения. Это означает, что для вычисления порога исследуется мощность сигнала в некотором маленьком интервале. После этого все интервалы в автоматическом режиме разбиваются на два класса. Последующая процедура выделения слов основана на этом разбиении. Сначала требуется выбрать размер интервала. Естественно выбирать этот параметр в зависимости от частоты стробирования 𝐹𝑟, например, 𝑆𝑖𝑧𝑒𝐹𝑟𝑎𝑔𝑚=𝐹𝑟/1000 — одна мс. Теперь функция createStdDistr вычисляет стандартные отклонения внутри каждого из выбранных интервалов из входного массива In.
import nunpy as np
def createStdDistr(In,SizeFragm):
In = np.float_(In)
In — = np.mean(In)
Ln = len(In)
Vary = []
I =0; End = SizeFragm
while End<= Ln:
Fragm = In[I: End]
Vary.append(Fragm)
I += SizeFragm
End += SizeFragm
VaryArray = np.float_(Vary)
Std = np.std(VaryArray)
return Std
Следующий шаг — классификация интервалов по мощности. Его реализует функция getFeat. В ее основе лежит стандартная процедура kmeans.
from scipy.cluster.vq import kmeans,vq
def getFeat(Std):
Cent,_ = kmeans(Std,2)
Cent = sorted(Cent)
Out = vq(Std,Cent)
Features = Out[0]
return Features
В этой процедуре функция kmeans порождает два центроида, центры скопления значений стандартных отклонений интервалов. Процедура сортировки ставит не первое место меньшее из значений центроидов. Функция vq присваивает метку 0 или 1 каждому интервалу, при этом метка 0 означает, что данный интервал близок к меньшему из центроидов. Это означает, что такой интервал мы считаем шумовым.
Окрасим интервалы в разные цвета в зависимости от метки. Вот так выглядит размеченная часть речевого файла, состоящая из 17 фрагментов.
from matplotlib import pyplot as plt
Std = createStdDistr(In,SizeFragm)
Features = getFeat(Std)
NumFragm = 17
Beg = 10 * SizeFragm
for I in range(10,10 + NumFragm):
End = Beg + SizeFragm
if Features[I] == 0:
Col = 'k'
else:
Col ='r'
Arg = np.arange(Beg,End)
plt.plot(Arg,In[Beg: End],Col)
Beg += SizeFragm
Следует заметить, что конечный результат зависит способа вычисления характеристики интервала. Например, заменив стандартное отклонение на дисперсию, мы получим другое разбиение интервалов на классы. Использование максимального значения в качестве характеристики приводит к чувствительности решения к случайным выбросам. Достоинством процедуры kmeans является то, что не делается предположений о распределении стандартных отклонений.
Отсу алгоритм
Как было отмечено выше, результат классификации интервалов зависит от выбора характеристики интервала, однако, и сама классификация с помощью kmeans не является единственной возможной. Рассмотрим еще одну процедуру классификации пригодную для бинарного случая и используемую для построения черно-белых изображений. Здесь также не делается предположений о распределении --">- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (7) »
Книги схожие с «Обнаружение скрытых эмоций в голосе» по жанру, серии, автору или названию:
Василий Вермолёк - Острова Становления (СИ) Жанр: Самиздат, сетевая литература Год издания: 2018 |