Задача изменения голоса. Часть 2. Физический/акустический подход к представлению речевого сигнала

    Данным постом мы продолжаем цикл статей, посвященных задаче анализа и изменения голоса человека. Напомним кратко о содержании предыдущей статьи:

    — было кратко рассказано о звуковом составе речи
    — были описаны такие важные процессы как фонация и артикуляция
    — была дана нестрогая классификация звуков человеческой речи и описаны характерные особенности классов звуков
    — кратко были обозначены проблемы, возникающие при обработке речевых сигналов

    Также мы немного обозначили задачи, которые фактически решает наше подразделение в компании i-Free. Закончена предыдущая статья была «громким» обещанием описать модели представления речевого сигнала и показать, как данные модели возможно использовать для изменения голоса диктора.

    Тут сразу сделаем небольшую оговорку. Термин «речевой сигнал» может восприниматься по-разному и нередко значение зависит от контекста. В контексте нашей работы нас интересуют лишь звуковые-акустические свойства речевого сигнала, его смысловая и эмоциональная нагрузка в данной и ближайших статьях рассматриваться не будут.

    При творческом подходе к задаче изменения голоса большинство известных моделей представления речевого сигнала являются весьма мощным инструментом, позволяющим сделать очень и очень многое. Как-то классифицировать подобные начинания не видится целесообразным, а на демонстрацию «всего подряд» уйдет масса времени. В данной и следующей статьях мы ограничимся лишь кратким описанием наиболее часто применяемых моделей и как-то попытаемся объяснить их физический/практический смысл. Примеры применения данных моделей будут показаны несколько позже — в следующих статьях мы опишем простейшую реализацию таких эффектов, как изменения пола и возраста диктора.

    WARNING!



    Эта статья ставит своей целью совсем чуть-чуть описать физику формирования звука в речевом тракте с помощью упрощенной модели. Как следствие, статья содержит некоторое количество формул и, возможно, не вполне очевидных переходов. Первоисточники указаны в тексте и при желании можно более подробно ознакомиться с данным материалом самостоятельно. Описанные в данной статье модели редко применяются для практических задач обработки записанной речи, скорее для исследовательских. Читатель, заинтересованный лишь в прикладных моделях представления речевого сигнала, сможет подчерпнуть для себя информацию в нашей следующей статье.



    Звуковые спец-эффекты и зачем нужны модели представления речевого сигнала?


    Для того, чтобы изменить свойства любого сигнала далеко не всегда требуется его точное описание. Такие операции, как усиление, фильтрация, ресамплинг (изменение частоты дискретизации), компрессия, клипирование вполне могут быть проделаны при наличии лишь приблизительных знаний об обрабатываемом сигнале. Применительно к задаче обработки звука, подобные операции можно отнести к самым базовым. Их применение, за исключением «экстремальных» случаев, как правило не сильно влияет на восприятие обработанного звука. Действительно интересные эффекты с их помощью получить весьма тяжело, а до неузнаваемости испортить сигнал при безмерном применении — проще простого.

    Возможно применить несколько более хитрые преобразования, к примеру модуляция и задержка (с прямой и обратной связью). Такие известные эффекты, как фленджер, тремоло/вибрато, хорус, фейзер, wah-wah, комб-фильтр и множество других строятся именно на этих преобразованиях и вполне могут быть применены не только к музыкальным инструментам, но и к голосу. Более подробно о данных эффектах и их реализации можно почитать в литературе, указанной в конце подпункта. Как было упомянуто в первой статье, данные эффекты придают голосу весьма необычное звучание, но результат не будет восприниматься на слух, как естественный.

    Когда требуется изменить голос так, чтобы результат остался при этом «человеческим», «бездумное» преобразование входного сигнала не подойдет. Более удачным подходом к такой задаче видится анализ сигнала, изменение его параметров и последующая реконструкция нового сигнала, «грубая» схема реализации подхода изображена ниже:



    Символом Ƒ() обозначено преобразование, которое отображает входной сигнал (или его часть) в некоторое множество параметров Xk, описывающих определенные свойства сигнала. Через Ƒ^-1() обозначено обратное преобразование из параметрического представления во временную область, собственно «ресинтез»*. Некоторые модели описывают лишь наиболее важные с точки зрения данной модели свойства сигнала, и для полноценного ресинтеза необходим т.н. сигнал-ошибка – e(t). Его смысл – разность между входным сигналом, и сигналом, ресинтезированным с помощью применяемой модели, при условии, что параметрическое представление сигнала не модифицировалось (e(t) = y(t) – x(t) | X_k = Y_k)**, примеры будут даны далее. Имея параметрическое представление сигнала возможно производить его более разносторонний анализ и модифицировать те или иные параметры, в зависимости от требуемого эффекта.

    При анализе речевого сигнала всегда необходимо помнить о его свойстве сильно изменяться даже за весьма короткие временные интервалы. Модели, использующие при своем расчете операции интегрировния по времени, таким образом, могут адекватно описывать речевой сигнал лишь на коротких временных интервалах. Отсюда напрямую следует необходимость обработки сигнала с помощью подобных моделей небольшими порциями. Поэтому в процессе ресинтеза необходимо уделить особое внимание «склеиванию швов», чтобы короткие синтезированные фрагменты сигнала плавно (без «щелчков») перетекали один в другой.

    * — оператором ^ будем далее обозначать возведение в степень, i.e k^n — возведение числа k в степень n.
    ** — нижним подчеркиванием будем далее символически обозначать подстрочное индексирование
    _______________________
    Обещанная литература, описывающая «внутреннее» устройство многих звуковых аудио-эффектов:
    The Theory and Technique of Electronic Music (Miller Puckette)
    DAFX — Digital Audio Effects (еdited by Udo Zolzer)
    Introduction To Digital Signal Processing — Computer Musically Speaking (Tae Hong Park)


    Физическое моделирование звукообразования в речи. Акустическая модель речевого тракта.


    Начать разговор о моделях речевого сигнала стоит с модели, если можно так выразиться, самого «нижнего» уровня — акустической модели речевого сигнала. Забегая вперед, сразу скажем, что исследования на данном уровне близки к фундаментальной науке и требуют весьма серьезной теоретической базы и технического оснащения. В нашем подразделении подобные работы не проводятся и здесь данная модель упоминается лишь в научно-познавательных целях. (Просьба не реагировать остро на «скучного вида» ссылки на литературу, их расшифровки будут даны в конце статьи и заинтересовавшийся читатель сможет самостоятельно исследовать вопрос)

    Цель акустической модели — описать физиологическое устройство речевого тракта конкретного человека, параметризовать процесс артикуляции во времени и отразить влияние данных параметров на воздушный поток, проходящий через речевой тракт. В качестве базовой работы многие авторы ссылаются на [1], где M. Portnoff изучал вопрос аппроксимации речевого тракта человека с помощью трубы с неравномерной изменяющейся во времени площадью поперечного сечения (иллюстрация ниже).



    Базовые дифференциальные уравнения, описывающие соотношения давления и скорости воздуха в данной трубе [2],[3] представлены ниже. На вид они не кажутся такими уж “страшными” (если не раскрывать подробно каждый член уравнения):



    где p = p (x,t) – изменение давления в зависимости от времени t и координаты точки x в трубе, u = u(x,t) — объемная скорость воздушного потока в трубе, ρ – плотность воздуха в трубе, c – скорость звука, A = A(x,t) — площадь поперечного сечения трубы в точке x в момент времени t. Общая длина трубы — l.

    Данные уравнения не имеют алгебраического решения за исключением простейших случаев с жесткими ограничениями на начальные/конечные условия [3]. Для нахождения численных решений необходимо получить значения давления и скорости воздуха в начальной и конечной точках речевого тракта — гортани и губах соответственно. Тем не менее неопределенность значений функции A(x,t) остается большой проблемой. Как утверждается в работе [4], достижения в области трехмерной томографии позволяют сделать значительные уточнения отношений площади речевого тракта и его акустических характеристик. Однако, даже зная полностью поведение A(x,t), или в случае её стационарности во времени (что справедливо при анализе коротких вокализованных сегментов), все равно необходимо делать большое количество допущений, чтобы получить некоторую практически полезную модель. Факторы, которые необходимо учесть при моделировании процесса артикуляции с помощью данной акустической модели [3]:

    1) Знание поведения A(x,t) во времени (уникально для каждого диктора)

    2) Потери энергии звука, связанные с теплообменом и вязким трением в речевом тракте

    3) Потери, связанные с эластичностью стенок речевого тракта (их податливость поступающим воздушным импульсам)

    4) Излучение звука в районе губ

    5) Влияние носоглотки, как дополнительного резонатора/излучателя звука

    6) Процесс возбуждения начальных звуковых волн (фонация), который также уникален для каждого отдельно взятого человека

    Каждый из данных факторов является отдельной темой для серьезных исследований. Если вернуться к задаче изменения голоса с помощью подхода с анализом и ресинтезом, то для применения данной модели необходимо из поступающего на обработку сигнала восстановить большое число физиологических параметров речевого тракта диктора. Нахождение параметров речевого тракта и/или параметров артикуляции по имеющемуся звуковому сигналу специалисты называют обратной речевой задачей ([5]). Данные задачи являются плохо обусловленными и для своего точного решения требуют больших ограничений на значения искомых параметров, либо их правдоподобных начальных приближений, которые можно получить с помощью специализированных измерений.

    С точки зрения обработки звука, получение физически-точной модели речевого тракта человека и параметров его артикуляции имеет наибольшее значение для:

    — судебной экспертизы

    — медицинской диагностики

    — систем синтеза речи (text-to-speech системы)

    При обработке звука в реальном масштабе времени точное физическое/акустическое моделирование звукообразования едва ли возможно без каких-либо априорных знаний о речевом тракте диктора. По этой причине тяжело представить применение данного подхода для работы с неизвестными голосами. Хотя теоретически именно физико-акустический подход должен при грамотной реализации дать наиболее правдоподобное звучание, так как является непосредственным моделированием процессов, происходящих во время звукопроизнесения.

    Более «приземленный» подход. Упрощенная акустическая модель речевого тракта.


    Сделав некоторые допущения, из описанной выше модели возможно получить упрощенную аппроксимацию речевого тракта, при этом частотная характеристика данной аппроксимации достаточно близка к реальным измерениям. В [3] дается хорошее описание этой упрощенной модели. Ниже излагается основная суть с акцентом на подразумеваемые, но не подробно разъясненные в [3] детали. Вышеупомянутые допущения сводятся к следующим:

    a) Для «длинных» звуковых волн (частота которых менее 4000 Гц, соответственно длина ~9 и более см), возможно пренебречь поворотами в речевом тракте и представить его как вытянутую трубу (как на предыдущем рисунке). Подобный подход близок к анализу акустики многих духовых инструментов, где рассматриваются лишь распространение продольных звуковых волн.

    b) Возможно пренебречь потерями, связанными с вязким трением и теплопроводностью. Данные потери значительно проявляются лишь в области высоких частот, и их влияние в сравнении с потерями при излучении звука мало.

    c) Пренебрегаются потери, связанные с эластичностью стенок речевого тракта.

    d) Излучающая поверхность (рот и/или нос) аппроксимируется отверстием на плоскости, а не на сфере.

    e) Для решения дифференциальных уравнений, описывающих взаимосвязь объемной скорости воздуха и давления, вводятся ограничения на граничные условия:
    — источник звука в районе гортани (Glottis) u_G(0,t) не подвержен колебанию давления в речевом тракте,
    — давление на выходе речевого тракта в районе губ (Lips) p_L(l,t) постоянно.

    f) Площадь поперечного сечения A(x,t) аппроксимируется дискретной функцией, см. рисунок ниже. Речевой тракт, таким образом, представляется конкатенацией труб разного диаметра. В момент анализа предполагается стационарность A(x,t) во времени, что справедливо на коротких временных интервалах.



    Для нахождения частотной характеристики данной системы нам необходимо найти отношение частотной характеристики сигнала на выходе системы U_n(w) к частотной характеристике сигнала на входе системы U_1(w). Для этого следует представить сигнал на входе в виде комплексной экспоненты с произвольной частотой и некоторой амплитудной характеристикой (U_G(w)*exp(jwt) ). После этого необходимо применить уравнения (1) последовательно для каждой трубы в системе. На стыках труб возможно применить принцип непрерывности функций u(x,t) и p(x,t) в пространстве. Более простыми словами:

    1) предположим, что анализируется 1-й и 2-й сегменты

    2) давление и объемная скорость воздуха в самом конце 1-го сегмента должны быть равны давлению и объемной скорости воздуха в самом начале 2-го сегмента

    3) получаем соотношения:



    Соотношения (2) будут справедливы как для самих функций p(x,t) и u(x,t), так и для их частотных характеристик P(x,w) и U(x, w).

    Анализ можно проводить как от начала к концу (от гортани к губам), так и наоборот. Второй вариант даже проще. Для полного счастья необходимо лишь применить «самые краевые» условия:



    Величина Z_L(w) носит название импеданс излучения и в случае с анализом человеческой речи, когда излучающая поверхность аппроксимируется малым отверстием на большой плоскости (условие ( d)) может быть выражен функцией от частоты и некоторых предопределенных констант L_L и R_L. Величина Z_G(w) — акустический импеданс в гортани и также может быть рассчитан с помощью некоторых предопределенных констант L_G и R_G. U_0(w) — частотная характеристика сигнала на выходе гортани, который мы для частотного анализа нашей модели условно предположили некоторой комплексной экспонентой.

    Используя решения для дифференциальных уравнений (1) и применяя условие непрерывности давления и объемной скорости воздуха в пространстве становится возможным пройти через всю «цепь» труб и выразить начальную скорость воздушного потока U_G(w) как функцию от конечной скорости U_L(w) или наоборот:



    где f_k – некоторая функция, зависящая как от решений уравнений (1) для k-й трубы, так и от длины/площади k-ой трубы. После этого сравнительно просто найти отношение «входа» к «выходу».

    Все описанные шаги справедливы только при допущениях a)-e). Результирующая частотная характеристика, при наличии адекватной дискретной аппроксимации речевого тракта (A_k и l_k, k=1:n), приемлемо описывает формантные характеристики различных гласных и не носовых согласных звуков. Для описания носовых звуков система должна усложниться, т. к. необходимо учесть дополнительную излучающую поверхность и разветвление речевого тракта, возникающее при опускании мягкого неба.

    Потери, связанные с теплообменом, вязким трением и эластичностью речевого тракта можно в достаточной мере учесть и в этой модели, однако тогда несколько усложнятся базовые дифференциальные уравнения (усложнится вид функции A(x,t)) и граничные условия.

    Для реализации звуковых эффектов применение данной модели подразумевает оценку значений A_k и l_k из обрабатываемого сигнала, их модификацию и последующий синтез нового звука. Для решения обратной задачи оценки A_k и l_k по входному сигналу необходимо знать сигнал возбуждения, который проходил через речевой тракт в момент анализа, или хотя бы иметь его правдоподобную аппроксимацию. Для аппроксимации сигнала возбуждения вокализованного фрагмента речи существует немалое количество моделей, однако для их применение необходимо в свою очередь определиться с адекватным выбором модели и подбором её параметров под обрабатываемый сигнал, что тоже не всегда является тривиальной задачей. Опять же существуют методы, позволяющие с разного рода погрешностями восстановить сигнал возбуждения речевого тракта из обрабатываемого звука.

    Даже при наличии хорошего приближения сигнала возбуждения, нахождение значений A_k и l_k требует решения системы нелинейных уравнений, что в свою очередь тянет за собой численные методы и поиск оптимальных значений со всеми вытекающими. Сказанное концептуально (НЕ МАТЕМАТИЧЕСКИ СТРОГО!) изображено на рисунке ниже:



    На данном рисунке Y(w_k) и G(w_k) — дискретный спектр обрабатываемого сигнала и его сигнала возбуждения соответственно. V(A,I) — модель частотной характеристики речевого тракта, зависящая от искомых A_k и l_k.

    Реализация системы, способной в отсутствие каких-либо априорных знаний о сигнале проделывать все вышесказанное видится достаточно сложной задачей. Дополнительные трудности возникают при попытке заставить работать такую систему с зашумленными сигналами в реальном времени.

    В целом, можно заключить, что подобная модель имеет бо'льшую ценность для задач синтеза речи (text-to-speech). Анализ же неизвестного входного сигнала с помощью подобной модели — удовольствие весьма сомнительное. Существует альтернативный взгляд на данную модель, делающий её более пригодной для «наших» целей.

    Речевой тракт как дискретный фильтр


    Для начала, сразу введем ещё одно дополнительное ограничение на рассматриваемую в предыдущем пункте модель:
    Все длины труб, составляющих речевой тракт принимаются равными друг другу:
    l_1 = l_2 = … = l_n = LEN
    Далее следует обратиться к акустике труб и вспомнить, что продольные звуковые волны имеют свойство отражаться от открытого конца трубы. Другими словами, функция объемной скорости воздушного потока является функцией от двух, распространяющихся в разных направлениях воздушных «волн»: u(t,x) = f(u+(t,x), u-(t,x)). Индексами + и — мы будем обозначать звуковые волны идущие в прямом (от гортани к губам) и обратном направлениях соответственно. Сказанное схематично проиллюстрировано ниже:



    Важно помнить, что изображена всего лишь схема. На самом деле звук не движется вперед по верхней и назад по нижней части трубы. Чтобы хоть как-то примерно себе представить, как это происходит на самом деле, можно обратиться к замечательной иллюстрации с сайта cnx.org, на которой изображена стоячая акустическая волна в идеальной трубе.

    Сказанное также подтверждается тем обстоятельством, что уравнения (1) имеют общие решения вида:



    Напомним, что ρ – плотность воздуха в трубе, c – скорость звука, A = A(x,t) — площадь поперечного сечения трубы в точке x в момент времени t. u+(x,t) — объемная скорость воздуха, идущего в прямом направлении, u-(x,t) — в обратном.

    Как утверждается в [3], данные решения можно вывести, применив теорию анализа электрических цепей, если допустить аналогии: давление p напряжение в цепи U; объемная скорость воздуха u ток в цепи I; акустическая индуктивность ρ/A индуктивность L; акустическая емкость A/(ρc^2) емкость C.

    Уравнения (5) справедливы для каждой трубы, составляющей нашу аппроксимацию речевого тракта. Теперь, зная общий вид решений уравнений (1), применяем условие непрерывности давления и скорости воздуха в пространстве и, обозначив через k индекс анализируемой трубы, можем сказать, что



    Сделав ряд алгебраических преобразований (за подробностями стоит обратиться к [3]), возможно показать, что:



    Коэффициент r_k в данной системе называют коэффициентом отражения, его численное значение можно выразить как:



    Величина l_k/c, часто встречаемая в уравнения (6), (7) численно равна времени, требуемой воздуху на прохождение k-й трубы. Т. к. в текущей анализируемой системе все длины труб равны LEN, обозначим через τ время, требуемое воздуху, чтобы пройти расстояние LEN.

    Таким хитрым образом мы получили соотношения (7), отражающие взаимосвязь между объемной скоростью прямого/обратного воздушного потоков в двух соседних трубах. Покажем данные соотношения графически:



    Главный вывод — прямой/обратный воздушные потоки в соседних трубах непосредственно взаимосвязаны через площади этих труб (коэффициент r_k).


    При переходе от непрерывного времени t к дискретному каждый отсчет сигнала следует за другим через некоторый период дискретизации T_s. Возможно подобрать количество труб в нашей системе таким образом, чтобы каждая задержка τ на рисунке выше соответствовала одному периоду дискретизации. Для этого рассмотрим простой пример. Если взять значении скорости звука в 350 м/сек и среднюю длину человеческого речевого тракта в 0.175 м (17.5 см), можно сказать, что звуковая волна пройдет весь тракт без отражений за 0.0005 сек. Предположим, что наша система состоит из 10 труб. Тогда задержка τ в каждой трубе составит порядка 0.00005 сек. Если мы хотим, например, чтобы данная задержка соответствовала нашему периоду дискретизации Ts, то мы получаем требуемую частоту дискретизации для данного сигнала: F_s = 1/T_s = 20 кГц. На практике возможно решать и обратную задачу — количество труб для аппроксимации речевого тракта «подгоняется» под частоту дискретизации имеющегося сигнала и условия его записи (например с учетом зависимости скорости воздуха от температуры). В зависимости от допустимой сложности системы, может стоять и жесткое ограничение на приемлемое количество труб в системе. Как показано в [3], для анализа такой системы в дискретном времени, достаточно удобно выбирать период дискретизации, равный 2τ, т. к. все переотраженные воздушные импульсы дойдут до выхода системы в моменты времени, кратные 2τ. От возникающих при таком подходе «промежуточных» задержек в пол-отсчета можно избавиться, если все задержки в одном из направлений распространения сигнала (прямом или обратном) перенести в противоположное направление. Доказательство приводить не будем в целях экономии места, подробнее об этом можно почитать опять же в [3]. Вспомнив из теории анализа дискретных систем, что:

    — передаточную функцию системы обычно выражают через Z-преобразование

    — оператор умножения на z^(-1) соответствует задержке сигнала на один отсчет

    мы в итоге может изобразить речевой тракт, состоящий например из 3-х труб следующим сравнительно простым способом:



    Начальный и конечный коэффициенты отражения берутся из граничных условий (3). Подробный переход от уравнений (3) к виду (1+r_G)/2 и (1+r_L) здесь также опущен для краткости. Множитель z^(3/2) добавлен как раз для компенсации переноса всех промежуточных задержек распространения сигнала из обратной «ветки» в прямую — 3 задержки по z^(-1/2) перенесены из нижней «ветки» в верхнюю и для компенсации этого действия применяется множитель z^(3/2).

    Переход от «аналоговой» системы из предыдущего пункта к цифровой системе позволяет значительно упростить уравнения, описывающие систему и вместо дифференциальных уравнений (1) использовать сравнительно простые разностные уравнения похожие на (7), только время t превратится в них в индекс дискретного отсчета сигнала. При работе с неизвестным сигналом, искомыми параметрами данной модели являются лишь площади труб, входящих в состав речевого тракта — A_k. Систему уравнений, применяемую для поиска A_k, не получится полностью свести к линейной, однако её общий вид будет проще, чем вид аналогичной системы из предыдущего пункта (рисунок со схемой нахождения площадей и длин речевого тракта из системы уравнений).

    Выводы


    Сделав некоторое количество допущений, можно сказать, что общая частотная характеристика речевого тракта в Z-области выглядит, как ([2], [3]):



    где G(z) — частотная характеристика воздушного потока в гортани, V(z) — частотная характеристика речевого тракта (более всего зависит от A(x,t)), R(z) – частотная характеристика излучателя звука в районе губ.

    В задачах моделирования речи, G(z) и R(z) как правило аппроксимируются в меру упрощенными моделями (особенно R(z), который часто представляют простым дифференциатором). V(z) наиболее часто является искомым членом и именно ему была посвящена данная статья. В некоторых задачах требуется максимально точно оценить G(z), т.к. данный член отвечает за фонацию звука и определяется физическими параметрами гортани конкретного человека. Возможно об анализе G(z) будет позже написана отдельная статья.

    Имея в своем распоряжении лишь запись голоса, любую из означенных выше задач вряд ли на сегодняшний день удастся решить алгебраически точно — возможно лишь применять численные методы для поиска оптимальных значений. Получив приближенные значения нужных параметров, в зависимости от требуемого звукового эффекта, эти параметры модифицируются, после чего можно синтезировать новый звук.

    Описанные в данной статье подходы к анализу речевых сигналов более применимы к задачам синтеза речи text-to-speech. Однако при качественной записи голоса и некоторых априорных знаниях, возможно применить данные модели и к «нашим» задачам.

    В следующей статье будет рассказано о более прикладных и возможно более понятных моделях представления речевого сигнала, а именно:
    — LPC (прямой «потомок» описанного в данной статье подхода)
    — Гармоническая модель речевого сигнала (фазовый вокодер)
    — HPN-модель

    ________________________
    Первоисточники:
    [1] M.R. Portnoff, A Quasi-One-Dimensional Digital Simulation for Time-Varying Vocal Tract
    [2] N. R. Raajan, T. R. Sivaramakrishnan and Y. Venkatramani, Mathematical Modeling of Speech Production and Its Application to Noise Cancellation (Chapter 3 from Speech Enhancement, Modeling and Recognition – Algorithms and Applications)
    [3] L.R. Rabiner, R.W. Schafer, Digital Processing of Speech Signals
    [4] В. Н. Сорокин, Фундаментальные исследования речи и прикладные задачи речевых технологий
    [5] В.Н.Сорокин, И.С.Макаров, Обратная задача для голосового источника.
    i-Free Group
    Company
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 1

      +1
      Почему у этого поста нет комментариев?

      Скриншоты формул из Ворда, конечно, немного портят картину, но статья-то потрясающая!

      Only users with full accounts can post comments. Log in, please.