Способ и сервер для преобразования текста в речь

Изобретение относится к области вычислительной техники. Технический результат заключается в повышении скорости реагирования системы IPA (уменьшать интервал времени между речевым фрагментом пользователя и предоставлением по меньшей мере части формируемого компьютером речевого фрагмента) путем оптимизации количества операций и объема памяти, необходимых сети CNN для формирования сегментов сигнала в реальном времени. Технический результат достигается за счет формирования на текущей итерации сегмента сигнала, включающего в себя сохранение первых данных тензора, рассчитанных первым скрытым слоем на этой итерации и содержащих данные фрагмента тензора. Данные фрагмента тензора используются на текущей итерации для формирования сегмента сигнала и подлежат использованию на следующей итерации для формирования следующего сегмента сигнала. За счет формирования на следующей итерации следующего сегмента сигнала, включающего в себя сохранение вторых данных тензора, рассчитанных первым скрытым слоем на следующей итерации, вторые данные тензора не содержат избыточных данных фрагмента тензора, идентичных данным фрагмента тензора из первых данных тензора. 2 н. и 22 з.п. ф-лы, 8 ил.

 

Область техники, к которой относится изобретение

[1] Настоящая технология относится к системам интеллектуальных персональных помощников и, в частности, к способу и электронному устройству для преобразования текста в речь.

Уровень техники

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

[3] Для выполнения функций по запросам пользователя разработаны системы интеллектуальных персональных помощников (IPA, Intelligent Personal Assistant). Например, такие системы IPA могут использоваться для поиска информации и для навигации. Традиционная система IPA, например, такая как система IPA Siri®, может принимать от устройства простые команды, вводимые человеком данные на естественном языке, и выполнять множество задач для пользователя. Например, пользователь может обмениваться информацией с системой IPA Siri® с использованием речевых фрагментов (через голосовой интерфейс Siri®), например, чтобы запросить текущую погоду, местоположение ближайшего торгового центра и т.п. Пользователь также может запрашивать выполнение различных приложений, установленных на электронном устройстве.

[4] Традиционные системы IPA должны быстро «отвечать» на запросы пользователя. Иными словами, скорость предоставления системой IPA сформированного компьютером речевого фрагмента в качестве ответа на речевой фрагмент пользователя играет важную роль в удовлетворенности пользователя от системы IPA.

Раскрытие изобретения

[5] Системы IPA используются для поддержания речевого взаимодействия между пользователями и электронными устройствами. Это обеспечивает удобное взаимодействие пользователей с устройствами, например, когда пользователь является инвалидом по зрению, когда в устройстве не предусмотрен традиционный визуальный дисплей (например, в умной колонке) и/или когда руки или глаза пользователя заняты (например, при вождении).

[6] Разработчики настоящей технологии обнаружили определенные технические недостатки, связанные с существующими системами IPA. По меньшей мере один недостаток традиционных систем IPA заключается в их ограниченной скорости реагирования на запросы пользователя. Иными словами, некоторым традиционным системам IPA может требоваться слишком много времени для предоставления сформированного компьютером речевого фрагмента в ответ на речевой фрагмент пользователя. Целью настоящего изобретения является устранение по меньшей мере некоторых недостатков известных решений.

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

[8] Следует отметить, что формирование в реальном времени и предоставление формируемого компьютером речевого фрагмента по частям при сохранении высокого качества такого формируемого компьютером речевого фрагмента в целом представляет собой сложную задачу, поскольку для обеспечения высокого качества всего формируемого компьютером речевого фрагмента формируемая часть должна восприниматься как «бесшовное» продолжение другой (предыдущей) части (или нескольких частей) формируемого компьютером речевого фрагмента. Некоторые описанные здесь способы и системы способны предоставлять эти части в реальном времени без ухудшения (или по меньшей мере с минимальным ухудшением) качества формируемого компьютером речевого фрагмента в целом. Как описано ниже, такое формирование в реальном времени может обеспечиваться с использованием особой сверточной нейронной сети (CNN, Convolutional Neural Network), способной формировать сегменты сигнала в реальном времени, относящиеся к формируемому компьютером речевому фрагменту в целом, предоставляемому в качестве ответа на речевой фрагмент пользователя.

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

[10] Разработчики настоящей технологии установили, что некоторые внутренние данные (данные тензора), рассчитанные сетью CNN при формировании сегмента сигнала полного формируемого компьютером речевого фрагмента, могут повторно использоваться при формировании последующего сегмента сигнала полного формируемого компьютером речевого фрагмента (без повторных расчетов). Иными словами, разработчики настоящей технологии установили, что некоторые данные тензора, рассчитанные сетью CNN на текущей итерации этапа использования, могут повторно использоваться на следующей итерации этапа использования.

[11] Как описано ниже, разработчики настоящей технологии разработали способы и системы, в которых количество вычислительных операций, необходимых для выполнения двух последовательных итераций этапа использования сети CNN, уменьшено за счет того, что на следующей итерации не требуется повторный расчет некоторых данных тензора, которые могут быть получены из памяти, поскольку они уже были рассчитаны и сохранены на предыдущей итерации. Также следует отметить, что исключение таких избыточных вычислительных операций позволяет уменьшить объем памяти, необходимой для выполнения двух последовательных итераций этапа использования сети CNN. Иными словами, расчет и сохранение избыточных данных увеличивает количество операций и объем памяти, требуемых для того, чтобы дважды сохранить одни и те же данные.

[12] Как описано выше, в контексте настоящей технологии сеть CNN используется для формирования сегментов звукового вывода в реальном времени. Ниже описана возможная реализация сети CNN сервером.

Одномерные сети CNN

[13] Одномерная свертка может быть определена как произведение тензоров:

,

где - входной тензор; - выходной тензор; - тензор весов модели; Ti - входная длина; I - количество входных каналов; То - выходная длина; О - количество выходных каналов (также известное как количество фильтров); K - размер фильтров.

[14] В некоторых сетях CNN тензоры X и Y имеют третье измерение B - так называемый размер пакета. В данном примере оно опущено, т.е. B = 1. Если рассматривать свертку без разрежения или заполнения незначащей информацией, то:

.

[15] Значения элементов тензора Y можно рассчитать по формуле:

[16] Следует отметить наличие в формуле операции умножения. Для расчета элементов тензора Y требуется в общей сложности умножений. Для сохранения получаемого на выходе результата требуется ячеек для действительных чисел.

[17] Такие операции характерны для многих архитектур нейронных сетей (NN, Neural Network). В библиотеках для обучения сетей NN (в частности, в библиотеках cuDNN) такие операции могут быть реализованы с высокой степенью оптимизации, т.е. с максимально эффективным использованием вычислительных ресурсов, например, неспециализированных вычислений на графических процессорах (GPGPU, General Purpose computing on Graphical Processing Units). При этом может возникнуть необходимость в удовлетворении некоторых требований к расположению элементов тензоров X, Y и W в памяти.

N-мерные сети CNN

[18] В контексте сети NN с N сверточными слоями (т.е. для N-мерной сети CNN) тензоры определяются по следующей формуле:

,

где , включая входной тензор X0, выходной тензор XN и промежуточные тензоры; - тензоры весов слоев модели. В этом случае:

[19] Следует отметить, что для расчета всей последовательности слоев требуется следующее количество операций умножения:

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

,

где O() можно оценить для случаев совпадения соответствующих размеров слоев и фильтров каждого слоя.

Потоковые сети CNN

[20] Следует отметить, что сети CNN также могут использоваться, если все входные данные доступны не одновременно, а поступают в реальном времени. Такие сети CNN иногда могут называться потоковыми сетями CNN, в которых входные данные предоставляются для соответствующих итераций сети CNN. Например, для (m - 1)-й итерации , а для m-й итерации . Соответственно, значения нового фрагмента тензора добавляются к значениям тензора :

.

[21] Можно снова рассчитать все значения тензора , при этом первые значения уже были рассчитаны на предыдущем шаге. Следует отметить, что тензор X1 (m) можно представить в виде и что для первого слоя может потребоваться расчет только новых значений. Поэтому требуются не все старые значения X0 (m - 1), а лишь (K - 1) последних значений. Таким образом, с использованием той же компьютерной процедуры можно рассчитать:

,

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

[22] Также следует отметить, что размер нового тензора по измерению T равен размеру и равен ΔT (m). Это равенство может соблюдаться не только для рассмотренных выше сверток, но и для других вариантов сверток с шагом, равным 1.

[23] Ниже описан один способ выполнения расчетов для последовательности слоев потоковой сети CNN. Пусть после расчета требуется рассчитать .

[24] Возможная реализация такой схемы расчетов (без сохранения промежуточных данных из предыдущих итераций) приведена на представлении 800 (см. фиг. 8). Предполагается, что выделенные серым цветом части тензоров не сохраняются в памяти. Тензоры имеют следующие размерности:

.

При таком подходе количество операций умножения для расчета составляет

,

а для сохранения промежуточных данных может потребоваться память

.

[25] Такой подход к реализации потоковой сети CNN не является оптимальным. Тем не менее, он может потребоваться для реализации потоковой сети CNN в случае фреймворков, подобных TensorRT, которые могут не поддерживать сохранение промежуточных результатов между обращениями к модели.

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

[27] Возможная реализация такой модифицированной схемы расчетов (с сохранением промежуточных данных из предыдущих итераций) приведена на представлении 850 (см. фиг. 8). В этом случае размерность T промежуточных фрагментов, требуемых от предыдущих итераций, равна .

[28] Тем не менее, следует отметить, что сложность расчетов отличается от предыдущего подхода и количество операций умножения равно

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

[30] Во-вторых, может потребоваться сохранение промежуточных результатов из предыдущего шага:

[31] Если , то необходимый объем памяти может увеличиться приблизительно вдвое. В некоторых вариантах осуществления изобретения реализована возможность высвобождения и повторного выделения памяти после расчета каждого слоя. Но в этом случае может потребоваться 2N обращений к диспетчеру памяти. В случае обычного диспетчера CUDA RT эти вызовы могут потребовать очень больших ресурсов. Кроме того, в более сложных архитектурах расчет нескольких последовательных слоев и даже результатов нескольких предыдущих итераций может зависеть от одного результата.

Потоковый буфер памяти

[32] В некоторых вариантах осуществления настоящей технологии в памяти может использоваться потоковый буфер. Потоковый буфер может использоваться в качестве выделенной для слоя области памяти. Ниже описана возможная реализация такого потокового буфера. Потоковый буфер размера , содержащий L указателей, может быть определен в виде следующей структуры:

- тензор с плотным расположением элементов в памяти (возможные варианты T-major (развертывание по оси T) и C-major (развертывание по оси C), соответствующие форматам NHWC и NCHW в терминах библиотеки cuDNN);

- L целых индексов , называемых указателями. Индексы указывают на положение указателя в буфере на оси T. Следует отметить, что индексы могут отсчитываться от 0;

- ориентированный ациклический граф зависимости с L вершинами

[33] Граф зависимостей определяет взаимосвязи между указателями. Если указатель i зависит от указателя j, т.е. < i , j > ∈ Edep, это означает, что инвариант titj соблюдается во всем буфере.

[34] В этом случае фрагмент из тензора X может быть взят вдоль оси T и может использоваться во время операций в качестве входного и выходного тензора без дополнительного копирования элементов. Рабочая область буфера представляет собой фрагмент между первым и последним указателями и может быть определена следующим образом:

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

- инициализация - для всех индексов t1, ... tL задается значение 0;

- сдвиг или перемещение указателя tl вправо на целое положительное число позиций Δt, т.е. tl := tl + Δt;

- запись или считывание любого подмножества элементов из рабочей области.

[36] Относительно сдвига или перемещения указателя необходимо отметить следующее. Во-первых, сдвиг не должен нарушать зависимости между указателями, т.е. . Во-вторых, если новая позиция указателя оказывается за пределами тензора X, т.е. tl + Δt ≥ TBUF, то можно сказать, что вся рабочая область вместе с содержимым и указателями перемещается влево до начала сдвига этого указателя:

b = min ({t1, ... tL})

e = max ({t1, ... tL})

.

[37] Затем может быть выполнен следующий сдвиг: tl := tl + Δt.

[38] При этом после сдвига размер рабочей области e - b не должен превышать TBUF. Если для копирования элементов тензора используется примитив, не допускающий пересечения между исходной и выходной областями памяти, это требование может быть более строгим, т.е. размер рабочей области не может превышать половины TBUF.

Использование потоковых буферов в сочетании с потоковой сетью CNN

[39] Ниже описано возможное использование потокового буфера для потоковой сети CNN в некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии. При реализации слоя потоковой сети CNN буферы могут использоваться для ввода и вывода данных. Пусть входные данные слоя находятся в буфере 620 с указателями 626 и 628, а выходные данные - в буфере 630 с указателями 636 и 638 (см. фиг. 6).

[40] Расчеты для следующей итерации могут быть выполнены на шагах 602, 604, 606, 608 и 610. На шаге 602 оба буфера могут содержать рабочую область длиной K (если предполагается, что текущий и следующий слои имеют одинаковый размер свертки). На шаге 604 указатель 628 перемещается на ΔT позиций и новый фрагмент рабочей области 620 заполняется входными значениями (полученными в предыдущем слое). На шаге 606 указатель 638 перемещается на ΔT позиций. Свертка в этом слое рассчитывается с использованием операции 522 свертки, а результат записывается в новый фрагмент рабочей области 630. На шаге 608 указатель 626 перемещается на ΔT позиций, уменьшая рабочую область буфера 620. На шаге 610 после считывания данных из рабочей области 630 следующим слоем на этой итерации указатель 636 перемещается на ΔT позиций, уменьшая рабочую область буфера 630.

[41] Следует отметить, что в случае многослойной сети CNN шаги 604 и 608 для данного слоя могут соответствовать шагам 606 и 610 для предыдущего слоя, а шаги 606 и 610 для данного слоя могут соответствовать шагам 604 и 608 для следующего слоя.

[42] Также следует отметить, что в таких вариантах реализации компромисс между использованием памяти и затратами времени может регулироваться параметром TBUF:

;

[43] Согласно первому аспекту настоящей технологии реализован способ преобразования текста в речь (TTS, Text-To-Speech), выполняемого в отношении текстового ввода для формирования звукового вывода. Звуковой выходной сигнал предоставляется пользователю электронного устройства и содержит множество последовательных сегментов сигнала. Электронное устройство связано с сервером. Сегмент из множества последовательных сегментов сигнала должен формироваться в реальном времени на соответствующей итерации этапа использования обученной сети CNN. Сеть CNN содержит по меньшей мере первый скрытый слой и второй скрытый слой. Второй скрытый слой следует за первым скрытым слоем. Второй скрытый слой способен формировать данные тензора на основе данных тензора, сформированных первым скрытым слоем на соответствующей итерации этапа использования сети CNN. Способ выполняется сервером. Способ включает в себя формирование сервером входных данных сети CNN на основе текстового ввода. Входные данные сети CNN связаны с соответствующими отметками времени. Отметки времени должны использоваться для определения предназначенных для итерации входных данных на соответствующей итерации этапа использования сети CNN. Способ включает в себя формирование сервером, использующим сеть CNN, на текущей итерации этапа использования сети CNN сегмента сигнала звукового вывода на основе первых предназначенных для итерации данных, доступных для этой итерации этапа использования. Формирование включает в себя сохранение в памяти первых данных тензора, рассчитанных первым скрытым слоем на текущей итерации этапа использования. Первые данные тензора содержат данные фрагмента тензора. Данные фрагмента тензора (а) используются на текущей итерации этапа использования для формирования сегмента сигнала звукового вывода и (б) подлежат использованию на следующей итерации этапа использования сети CNN для формирования следующего сегмента сигнала звукового вывода. Данные фрагмента тензора могут идентифицироваться с использованием начальной позиции данных фрагмента тензора в памяти и конечной позиции данных фрагмента тензора в памяти. Способ включает в себя формирование сервером, использующим сеть CNN, на следующей итерации этапа использования сети CNN следующего сегмента сигнала звукового вывода на основе вторых предназначенных для итерации данных, доступных для следующей итерации этапа использования, и части первых предназначенных для итерации данных. Формирование включает в себя сохранение в памяти вторых данных тензора, рассчитанных первым скрытым слоем на следующей итерации этапа использования. Вторые данные тензора хранятся в памяти последовательно с первыми данными тензора первого скрытого слоя с текущей итерации этапа использования. Вторые данные тензора не содержат избыточных данных фрагмента тензора. Избыточные данные фрагмента тензора идентичны данным фрагмента тензора из первых данных тензора. Вторые данные тензора могут идентифицироваться с использованием начальной позиции вторых данных тензора в памяти и конечной позиции вторых данных тензора в памяти. Начальная позиция вторых данных тензора соответствует конечной позиции данных фрагмента тензора в памяти. Формирование также включает в себя применение сервером сверточного фильтра второго скрытого слоя в отношении (а) данных фрагмента тензора из первых данных тензора и (б) вторых данных тензора, хранящихся в памяти, и формирование таким образом вторым скрытым слоем третьих данных тензора, подлежащих сохранению в памяти. Третьи данные тензора используются для формирования следующего сегмента сигнала звукового вывода. Формирование также включает в себя сохранение сервером третьих данных тензора в памяти.

[44] В некоторых вариантах осуществления способа входные данные сети CNN представлены в виде спектрограммы.

[45] В некоторых вариантах осуществления способа входные данные сети CNN формируются другой обученной моделью, способной преобразовывать текстовый ввод в выходные данные спектрограммы.

[46] В некоторых вариантах осуществления способа память содержится в запоминающем устройстве графического процессора (GPU).

[47] В некоторых вариантах осуществления способа первый скрытый слой имеет функцию активации. Данные фрагмента тензора из первых данных тензора, сформированных на текущей итерации этапа использования, представляют собой выходные данные функции активации.

[48] В некоторых вариантах осуществления способа размер первых данных тензора в памяти зависит от количества предназначенных для итерации данных, доступных для текущей итерации этапа использования.

[49] В некоторых вариантах осуществления способа размер вторых данных тензора в памяти зависит от количества вторых предназначенных для итерации данных, доступных для следующей итерации этапа использования.

[50] В некоторых вариантах осуществления способа размер данных фрагмента тензора в памяти определяется на основе гиперпараметров сверточного фильтра второго скрытого слоя.

[51] В некоторых вариантах осуществления способа гиперпараметры включают в себя параметр размера ядра и/или параметр шага и/или параметр дилатации.

[52] В некоторых вариантах осуществления способа память содержит выделенную для слоя область памяти, предназначенную для соответствующего скрытого слоя сети CNN. Выделенная для слоя область памяти определяется границами в памяти. Первая граница указывает на начальную позицию в памяти соответствующей выделенной для слоя области памяти, а вторая граница указывает на конечную позицию в памяти соответствующей выделенной для слоя области памяти. Выделенная для слоя область памяти, предназначенная для соответствующего скрытого слоя, способна хранить данные тензора, формируемые соответствующим скрытым слоем на итерациях этапа использования сети CNN.

[53] В некоторых вариантах осуществления способа пара флагов, связанная с первой выделенной для слоя областью памяти, предназначенной для первого скрытого слоя, используется при сохранении данных, сформированных первым скрытым слоем. Эта пара флагов располагается в границах первой выделенной для слоя области памяти. Пара других флагов, связанных со второй выделенной для слоя областью памяти, предназначенной для второго скрытого слоя, используется для сохранения данных, сформированных вторым скрытым слоем. Пара других флагов располагается в границах второй выделенной для слоя области памяти.

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

[55] Согласно второму аспекту настоящей технологии реализован сервер для преобразования TTS, выполняемого в отношении текстового ввода для формирования звукового вывода. Звуковой выходной сигнал предназначен для пользователя электронного устройства и содержит множество последовательных сегментов сигнала. Электронное устройство связано с сервером. Сегмент из множества последовательных сегментов сигнала должен формироваться в реальном времени на соответствующей итерации этапа использования обученной сети CNN. Сеть CNN содержит по меньшей мере первый скрытый слой и второй скрытый слой. Второй скрытый слой следует за первым скрытым слоем. Второй скрытый слой способен формировать данные тензора на основе данных тензора, сформированных первым скрытым слоем на соответствующей итерации этапа использования сети CNN. Сервер способен формировать входные данные сети CNN на основе текстового ввода. Входные данные сети CNN связаны с соответствующими отметками времени. Отметки времени должны использоваться для определения предназначенных для итерации входных данных для соответствующей итерации этапа использования сети CNN. Сервер с использованием сети CNN способен на текущей итерации этапа использования сети CNN формировать сегмент сигнала звукового вывода на основе первых предназначенных для итерации данных, доступных для этой итерации этапа использования. Формирование включает в себя сохранение сервером в памяти первых данных тензора, рассчитанных первым скрытым слоем на текущей итерации этапа использования. Первые данные тензора содержат данные фрагмента тензора. Данные фрагмента тензора (а) используются на текущей итерации этапа использования для формирования сегмента сигнала звукового вывода и (б) подлежат использованию на следующей итерации этапа использования сети CNN для формирования следующего сегмента сигнала звукового вывода. Данные фрагмента тензора могут идентифицироваться с использованием начальной позиции данных фрагмента тензора в памяти и конечной позиции данных фрагмента тензора в памяти. Сервер с использованием сети CNN способен на следующей итерации этапа использования сети CNN формировать следующий сегмент сигнала звукового вывода на основе вторых предназначенных для итерации данных, доступных для следующей итерации этапа использования, и части первых предназначенных для итерации данных. Формирование включает в себя сохранение сервером в памяти вторых данных тензора, рассчитанных первым скрытым слоем на следующей итерации этапа использования. Вторые данные тензора хранятся в памяти последовательно с первыми данными тензора первого скрытого слоя с текущей итерации этапа использования. Вторые данные тензора не содержат избыточных данных фрагмента тензора, идентичных данным фрагмента тензора из первых данных тензора. Вторые данные тензора могут идентифицироваться с использованием начальной позиции вторых данных тензора в памяти и конечной позиции вторых данных тензора в памяти. Начальная позиция вторых данных тензора соответствует конечной позиции данных фрагмента тензора в памяти. Формирование включает в себя применение сервером сверточного фильтра второго скрытого слоя в отношении (а) данных фрагмента тензора из первых данных тензора и (б) вторых данных тензора, хранящихся в памяти, и формирование таким образом вторым скрытым слоем третьих данных тензора, подлежащих сохранению в памяти. Третьи данные тензора используются для формирования следующего сегмента сигнала звукового вывода. Формирование включает в себя сохранение сервером третьих данных тензора в памяти.

[56] В некоторых вариантах осуществления сервера входные данные сети CNN представлены в виде спектрограммы.

[57] В некоторых вариантах осуществления сервера входные данные сети CNN формируются другой обученной моделью, способной преобразовывать текстовый ввод в выходные данные спектрограммы.

[58] В некоторых вариантах осуществления сервера память содержится в запоминающем устройстве GPU.

[59] В некоторых вариантах осуществления сервера первый скрытый слой имеет функцию активации. Данные фрагмента тензора из первых данных тензора, сформированных на текущей итерации этапа использования, представляют собой выходные данные функции активации.

[60] В некоторых вариантах осуществления сервера размер первых данных тензора в памяти зависит от количества предназначенных для итерации данных, доступных для текущей итерации этапа использования.

[61] В некоторых вариантах осуществления сервера размер вторых данных тензора в памяти зависит от количества вторых предназначенных для итерации данных, доступных для следующей итерации этапа использования.

[62] В некоторых вариантах осуществления сервера размер данных фрагмента тензора в памяти определен на основе гиперпараметров сверточного фильтра второго скрытого слоя.

[63] В некоторых вариантах осуществления сервера гиперпараметры включают в себя параметр размера ядра и/или параметр шага и/или параметр дилатации.

[64] В некоторых вариантах осуществления сервера память содержит выделенную для слоя область памяти, предназначенную для соответствующего скрытого слоя сети CNN. Выделенная для слоя область памяти определяется границами в памяти. Первая граница указывает на начальную позицию в памяти соответствующей выделенной для слоя области памяти, а вторая граница указывает на конечную позицию в памяти соответствующей выделенной для слоя области памяти. Выделенная для слоя область памяти, предназначенная для соответствующего скрытого слоя, способна хранить данные тензора, формируемые соответствующим скрытым слоем на итерациях этапа использования сети CNN.

[65] В некоторых вариантах осуществления сервера пара флагов, связанная с первой выделенной для слоя областью памяти, предназначенной для первого скрытого слоя, используется при сохранении данных, сформированных первым скрытым слоем. Эта пара флагов располагается в границах первой выделенной для слоя области памяти. Пара других флагов, связанная со второй выделенной для слоя областью памяти, предназначенной для второго скрытого слоя, используется для сохранения данных, сформированных вторым скрытым слоем. Пара других флагов располагается в границах второй выделенной для слоя области памяти.

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

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

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

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

[70] В контексте настоящего описания выражение «информация» включает в себя информацию любого рода или вида, допускающую хранение в базе данных. Таким образом, информация включает в себя аудиовизуальные произведения (изображения, фильмы, звукозаписи, презентации и т.д.), данные (данные о местоположении, числовые данные и т.д.), текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы, списки слов и т.д., но не ограничивается ими.

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

[72] В контексте настоящего описания выражение «пригодный для использования в компьютере носитель информации» означает носители любого рода и вида, включая оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), диски (CD-ROM, DVD, гибкие диски, жесткие диски и т.д.), USB-накопители, твердотельные накопители, накопители на магнитных лентах и т.д.

[73] В контексте настоящего описания числительные «первый» «второй», «третий» и т.д. используются лишь для указания различия между существительными, к которым они относятся, но не для описания каких-либо определенных взаимосвязей между этими существительными. Например, должно быть понятно, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо определенного порядка, типа, хронологии, иерархии или классификации, в данном случае, серверов, а также что их использование (само по себе) не подразумевает наличие «второго сервера» в любой ситуации. Кроме того, как встречается в настоящем описании в другом контексте, ссылка на «первый» элемент и «второй» элемент не исключает того, что эти два элемента в действительности могут быть одним и тем же элементом. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой одно и то же программное и/или аппаратное средство, а в других случаях - разные программные и/или аппаратные средства.

[74] Каждый вариант осуществления настоящей технологии относится к по меньшей мере одной из вышеупомянутых целей и/или аспектов, но не обязательно ко всем ним. Должно быть понятно, что некоторые аспекты настоящей технологии, связанные с попыткой достижения вышеупомянутой цели, могут не соответствовать этой цели и/или могут соответствовать другим целям, явным образом здесь не упомянутым.

[75] Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления настоящей технологии содержатся в дальнейшем описании, в приложенных чертежах и в формуле изобретения.

Краткое описание чертежей

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

[77] На фиг. 1 представлена схема системы, пригодной для реализации не имеющих ограничительного характера вариантов осуществления данной технологии.

[78] На фиг. 2 приведена схема процесса формирования входных данных для сети CNN, выполняемой системой, представленной на фиг. 1, согласно некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

[79] На фиг. 3 приведена схема последовательности итераций этапа использования сети CNN, выполняемой системой, представленной на фиг. 1, согласно по некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

[80] На фиг. 4 приведена схема первой итерации этапа использования и последовательности итераций этапа использования сети CNN, выполняемых системой, представленной на фиг. 1, согласно некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

[81] На фиг. 5 представлены сформированные на первой итерации этапа использования и на следующей итерации этапа использования (см. фиг. 4) данные тензора первого скрытого слоя и второго скрытого слоя сети CNN, реализованной в системе, представленной на фиг. 1, согласно некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

[82] На фиг. 6 показано сохранение в запоминающем устройстве, представленном на фиг. 1, данных тензора для первого скрытого слоя и для второго скрытого слоя сети CNN, реализованной в системе, представленной на фиг. 1, согласно некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

[83] На фиг. 7 представлена блок-схема способа преобразования TTS текстового ввода для формирования звукового вывода согласно некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

[84] На фиг. 8 представлены схема расчетов потоковой сети CNN без сохранения промежуточных данных с предыдущих итераций и модифицированная схема расчетов с сохранением промежуточных данных с предыдущих итераций согласно некоторым не имеющим ограничительного характера вариантам осуществления настоящей технологии.

Осуществление изобретения

[85] На фиг. 1 представлена схема системы 100, пригодной для реализации вариантов осуществления настоящей технологии, не имеющих ограничительного характера. Очевидно, что система 100 приведена лишь для демонстрации варианта реализации настоящей технологии. Таким образом, дальнейшее описание системы представляет собой описание примеров, иллюстрирующих настоящую технологию. Это описание не предназначено для определения объема или границ настоящей технологии. В некоторых случаях приводятся полезные примеры модификаций системы 100. Они способствуют пониманию, но также не определяют объема или границ настоящей технологии.

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

[87] В общем случае система 100 способна предоставлять ответы на запросы пользователя, которые, можно сказать, в результате обеспечивают «диалог» пользователя и электронного устройства. Например, звуковой сигнал 152 (такой как речевой фрагмент) от пользователя 102 может быть обнаружен электронным устройством 104 (или просто устройством 104), которое в ответ способно предоставлять звуковые сигналы 154 (такие как речевые фрагменты или формируемый компьютером речевой фрагмент). Таким образом, можно сказать, что в результате этого обеспечивается диалог 150 между пользователем 102 и устройством 104, состоящий из (а) звукового сигнала 152 и (б) звукового сигнала 154.

[88] Ниже описаны различные элементы системы 100 и реализация этими элементами звукового сигнала для его предоставления электронным устройством 104 в ответ на звуковой сигнал 152 пользователя 102.

Устройство пользователя

[89] Как описано выше, система 100 содержит устройство 104. На реализацию устройства 104 не накладывается каких-либо особых ограничений. Например, устройство 104 может быть реализовано в виде персонального компьютера (настольного, ноутбука, нетбука и т.д.), беспроводного устройства связи (смартфона, сотового телефона, планшета, умной колонки и т.п.) или сетевого оборудования (маршрутизатора, коммутатора, шлюза). Устройство 104 может называться электронным устройством, оконечным устройством, клиентским электронным устройством или просто устройством. Следует отметить, что связь электронного устройства 104 с пользователем 102 не означает необходимости предлагать или подразумевать какой-либо режим работы, например, вход в систему, регистрацию и т.п.

[90] Предполагается, что устройство 104 содержит известные в данной области техники аппаратные средства и/или прикладное программное обеспечение и/или встроенное программное обеспечение (либо их сочетание) для (а) обнаружения или фиксации звукового сигнала 152 и (б) предоставления или воспроизведения звукового сигнала 154. Например, устройство 104 может содержать один или несколько микрофонов для обнаружения или фиксации звуковых сигналов 152 и один или несколько громкоговорителей для предоставления или воспроизведения звуковых сигналов 154.

[91] Устройство 104 также содержит известные в данной области техники аппаратные средства и/или прикладное программное обеспечение и/или встроенное программное обеспечение (либо их сочетание) для выполнения приложения 105 IPA. В общем случае приложение 105 IPA, также известное как «чатбот», предназначено для того, чтобы обеспечивать пользователю 102 возможность отправлять запросы в виде речевых фрагментов (например, в виде звукового сигнала 152) и в ответ предоставлять пользователю ответы в виде речевых фрагментов (например, в виде звукового сигнала 154).

[92] Отправка запросов и предоставление ответов может выполняться приложением 105 IPA с использованием пользовательского интерфейса на естественном языке. В общем случае пользовательский интерфейс на естественном языке приложения 105 IPA может представлять собой человеко-машинный интерфейс любого вида, в котором лингвистические явления, такие как глаголы, фразы, предложения и т.п., выполняют роль элементов управления в пользовательском интерфейсе для извлечения, выбора, изменения или иного формирования данных в приложении 105 IPA.

[93] Например, при обнаружении (т.е. фиксации) речевых фрагментов пользователя 102 (например, звукового сигнала 152) устройством 104 приложение 105 IPA может использовать свой пользовательский интерфейс на естественном языке для анализа речевых фрагментов пользователя 102 и извлечения из них данных, указывающих на запросы пользователя. Кроме того, пользовательским интерфейсом на естественном языке приложения 105 IPA анализируются данные, указывающие на ответы, полученные устройством 104, с целью предоставления или воспроизведения речевых фрагментов (например, звукового сигнала 154), соответствующих этим ответам.

[94] Как описано ниже, в по меньшей мере некоторых вариантах осуществления настоящей технологии электронное устройство 104 может получать данные для формирования звукового сигнала 154 в виде сегментов. Иными словами, это означает, что система 100 может формировать сегменты сигнала в реальном времени для воспроизведения звукового сигнала 154 пользователю 102, что позволяет повысить скорость реагирования приложения 105 IPA.

Сеть связи

[95] В иллюстративном примере системы 100 устройство 104 соединено с сетью 110 связи для доступа и передачи пакетов данных серверу 106 и/или другим веб-ресурсам (не показаны) или от них. В некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии в качестве сети 110 связи может использоваться сеть Интернет. В других не имеющих ограничительного характера вариантах осуществления данной технологии сеть 110 связи может быть реализована иначе, например, в виде любой глобальной сети связи, локальной сети связи, частной сети связи и т.п. Реализация линии связи (отдельно не обозначена) между устройством 104 и сетью 110 связи зависит, среди прочего, от реализации устройства 104.

[96] Лишь в качестве примера, не имеющего ограничительного характера, в тех вариантах осуществления настоящей технологии, где устройство 104 реализовано как беспроводное устройство связи (такое как смартфон), линия связи может быть реализована как беспроводная линия связи (такая как канал сети связи 3G, канал сети связи 4G, Wireless Fidelity или сокращенно WiFi®, Bluetooth® и т.п.). В тех примерах, где устройство 104 реализовано как ноутбук, линия связи может быть беспроводной (такой как Wireless Fidelity или сокращенно WiFi®, Bluetooth® и т.д.) или проводной (такой как соединение на основе Ethernet).

Сервер

[97] Как описано выше, система 100 также содержит сервер 106, который может быть реализован в виде традиционного компьютерного сервера. В примере осуществления настоящей технологии сервер 106 может быть реализован в виде сервера Dell™ PowerEdge™, работающего под управлением операционной системы Microsoft™ Windows Server™. Очевидно, что сервер 106 может быть реализован с использованием любых других подходящих аппаратных средств, прикладного программного обеспечения и/или встроенного программного обеспечения либо их сочетания. В представленных не имеющих ограничительного характера вариантах осуществления настоящей технологии сервер 106 представляет собой один сервер. В других не имеющих ограничительного характера вариантах осуществления настоящей технологии функции сервера 106 могут быть распределены между несколькими серверами.

[98] В общем случае сервер 106 способен (а) получать данные, связанные со звуковым сигналом 152, от устройства 104, (б) анализировать эти данные и (в) в ответ определять данные для формирования звукового сигнала 154. Например, сервер 106 может обрабатывать данные, указывающие на запрос пользователя, и в ответ может формировать данные, указывающие на ответ на этот запрос пользователя. Можно сказать, что сервер 106 может (а) выполнять одну или несколько компьютерных процедур, которые называются здесь поисковой системой 130, для определения контента ответа, который должен быть предоставлен пользователю 102, и (б) выполнять одну или несколько компьютерных процедур, которые называются здесь системой 140 TTS.

[99] В некоторых вариантах осуществления изобретения сервер 106 может управляться и/или администрироваться поставщиком услуг поисковой системы (не показан), таким как оператор поисковой системы Yandex™. Сервер 106 может содержать поисковую систему 130 для выполнения одного или нескольких поисков в ответ на запросы, отправленные пользователями поисковой системы 130.

[100] В некоторых вариантах осуществления изобретения сервер 106 может получать данные от устройства 104, указывающие на запрос пользователя 102. Например, приложение 105 IPA устройства 104 может формировать цифровое представление звука для звукового сигнала 152 (например, для речевого фрагмента пользователя) и отправлять это цифровое представление звука через сеть 110 связи серверу 106. В этом примере сервер 106 может формировать текстовое представление запроса, отправленного пользователем 102, на основе цифрового представления звука речевого фрагмента пользователя и выполнять поиск на основе сформированного таким образом текстового представления запроса.

[101] Следует отметить, что преобразование текста в речь (STT, Speech-To-Text) в отношении цифрового звукового представления речевого фрагмента пользователя может быть выполнено локально в устройстве 104 (например, приложением 105 IPA). Следовательно, устройство 104 дополнительно или в качестве альтернативы может отправлять текстовое представление запроса серверу 106 в дополнение к цифровому представлению звука или вместо него.

[102] Как описано выше, сервер 106 может использовать текстовое представление запроса для выполнения поиска (соответствующего этому запросу) и формировать таким образом результаты поиска, релевантные этому запросу. Например, сервер 106, использующий поисковую систему 130, может формировать данные, указывающие на один или несколько результатов поиска, релевантных запросу пользователя 102. Поисковая система 130 может определять контент-ресурсы, релевантные запросу пользователя, и ранжировать эти контент-ресурсы, среди прочего, на основе релевантности их контента запросу, как это известно в данной области техники.

[103] Независимо от конкретного способа определения сервером 106 контента ответа, сервер 106 может использовать систему 140 TTS для формирования звукового вывода, представляющего этот контент, и предоставлять его в реальном времени электронному устройству 104 для воспроизведения пользователю 102 в качестве звукового сигнала 154. В некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии один из элементов системы 140 TTS представляет собой сеть 180 CNN, позволяющую итеративно формировать сегменты звукового вывода в реальном времени на основе текстового ввода.

[104] В общем случае сети NN представляют собой особый класс алгоритмов машинного обучения (MLA, Machine Learning Algorithm) и состоят из взаимосвязанных групп искусственных «нейронов», обрабатывающих информацию с использованием коннекционного подхода к вычислениям. Сети NN используются для моделирования сложных взаимосвязей между входными и выходными данными (без фактической информации об этих взаимосвязях) или для поиска закономерностей в данных. Сети NN сначала адаптируются на этапе обучения, когда они обеспечиваются известным набором входных данных и информацией для адаптации сети NN с целью формирования соответствующих выходных данных (для ситуации, в отношении которой выполняется попытка моделирования). На этапе обучения сеть NN адаптируется к изучаемой ситуации и изменяет свою структуру так, чтобы она была способна обеспечить адекватное предсказание выходных данных для входных данных в новой ситуации (на основе того, что было выучено). Иными словами, вместо попытки определения сложных статистических распределений или математических алгоритмов для некоторой ситуации сеть NN пытается предоставить «интуитивный» ответ на основе «восприятия» этой ситуации. Таким образом, сеть NN представляет собой своего рода обученный черный ящик, который может быть использован в ситуациях, когда содержимое этого ящика может быть менее важным, чем то, что этот ящик предоставляет адекватные ответы для входных данных. Например, сети NN широко используются для оптимизации распределения веб-трафика между серверами и при обработке данных, включая фильтрацию, кластеризацию, разделение сигналов, сжатие, формирование векторов и т.п.

[105] Сети CNN, представляющие собой особый класс глубоких сетей NN и чаще всего применяемые для анализа зрительных представлений, также используются и для преобразования TTS. Можно сказать, что обычно в сетях CNN используется математическая операция свертки, представляющая собой линейную операцию особого вида. Также можно сказать, что сети CNN представляют собой сети NN, использующие свертку вместо обычного матричного умножения в по меньшей мере одном из своих слоев.

[106] Фактически сети CNN содержат входной и выходной слои, а также несколько скрытых слоев. Скрытые слои сети CNN обычно состоят из последовательности сверточных слоев, выполняющих свертку с использованием умножения или иного скалярного произведения. Они также могут включать в себя функции активации (например, слой усеченного линейного преобразования (RELU, REctifier Linear Unit)) за которыми следуют дополнительные свертки, такие как слои пулинга, полносвязные слои и слои нормализации, которые здесь обычно называются скрытыми слоями, поскольку их входы и выходы маскируются функцией активации и/или сверткой.

[107] В общем случае входные данные сети CNN представляют собой тензор некоторого размера. Например, размер тензора может определяться с использованием высоты, ширины и глубины. После того, как входной тензор проходит через сверточный слой, он абстрагируется до карты признаков, имеющей собственный размер. Можно сказать, что сверточный слой может включать в себя следующие признаки: размер ядра свертки, определяемый шириной и высотой (гиперпараметры), количество входных каналов и выходных каналов (гиперпараметры) и т.п. Затем сверточный слой выполняет свертку данных и передает результат следующему слою и т.д.

[108] Следует отметить, что нейроны сверточного слоя могут обрабатывать данные для своего «рецептивного поля». Например, первый слой нейронов сети CNN может состоять из всех входных нейронов. Нейроны следующего слоя могут быть связаны с некоторыми входными нейронами, но не со всеми. Следовательно, вместо соединения каждого нейрона со всеми нейронами предыдущего слоя в сетях CNN может использоваться компоновка, подобная рецептивному полю, где каждый нейрон связан только с подмножеством нейронов предыдущего (нижнего) слоя. Рецептивное поле нейрона в одном из нижних слоев охватывает лишь небольшую часть входных данных, тогда как рецептивное поле нейрона в последующих (более высоких) слоях включает в себя сочетание рецептивных полей нескольких (но не всех) нейронов предшествующего слоя. Таким образом, каждый последующий слой способен, в известном смысле, выучивать все более абстрактные признаки первоначальных входных данных. Можно сказать, что такое использование рецептивных полей обеспечивает сетям CNN преимущество при распознавании зрительных и акустических образов по сравнению с сетями NN других видов.

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

[110] Вкратце, можно сказать, что реализация сети 180 CNN сервером 106 может быть разделена на два основных этапа: этап обучения и этап использования. Сначала сеть 180 CNN обучается на этапе обучения. Затем, когда сети 180 CNN известно, какие предполагаются входные данные и какие должны выдаваться выходные данные, эта сеть 180 CNN работает с реальными данными на этапе использования. Ниже более подробно описано обучение и последующее использование сервером 106 сети 180 CNN для формирования представления звукового вывода на основе текстового представления контента.

Запоминающее устройство

[111] Сервер 106 имеет доступ к запоминающему устройству 108. Как описано ниже, сервер 106 способен использовать запоминающее устройство 108 для хранения данных, обрабатываемых по меньшей мере некоторыми элементами системы 140 TTS. В некоторых вариантах осуществления изобретения запоминающее устройство 108 может входить в состав сервера 106. Тем не менее, предполагается, что запоминающее устройство 108 может представлять собой удаленное запоминающее устройство по отношению к серверу 106 без выхода за границы настоящей технологии.

[112] В по меньшей мере одном варианте осуществления настоящей технологии запоминающее устройство 108 может представлять собой графический процессор (GPU, Graphical Processing Unit). В общем случае устройство GPU содержит специализированный процессор с собственной памятью, обычно выполняющий операции с плавающей запятой, необходимые для отображения графических данных. Запоминающие устройства вида GPU могут быть оптимизированы для моделей глубокого обучения, поскольку они способны одновременно выполнять несколько операций. Иными словами, модели глубокого обучения могут обучаться быстрее с использованием запоминающих устройств вида GPU, а не устройств вида «центральный процессор» (CPU, Central Processing Unit) за счет параллельного (одновременного), а не последовательного (одна за другой) выполнения операций.

[113] Запоминающие устройства вида GPU могут содержать большое количество ядер, что способствует улучшению расчетов для нескольких параллельных процессов. Кроме того, расчеты при глубоком обучении предполагают обработку огромных объемов данных, для чего лучше всего подходит производительность запоминающих устройств вида GPU.

[114] Фактически, устройства GPU более предпочтительны для приложений глубокого обучения, чем процессоры CPU, благодаря нескольким параметрам. Производительность - одна из основных причин большей скорости вычислений устройств GPU по сравнению с устройствами CPU. В случае больших наборов данных устройства CPU используют много памяти при обучении модели. Для расчетов в больших и сложных задачах требуется много тактовых циклов в запоминающем устройстве вида CPU. Процессоры CPU выполняют задания последовательно и содержат сравнительно меньше ядер. Устройства GPU снабжены собственной видеопамятью (VRAM). Кроме того, обучение модели при глубоком обучении требует большого набора данных и, следовательно, значительных вычислительных операций с точки зрения объема памяти. Запоминающее устройство вида GPU лучше подходит для эффективной обработки таких данных - чем больше количество вычислений, тем сильнее проявляется преимущество запоминающего устройства вида GPU перед запоминающим устройством вида CPU.

[115] Как описано ниже, запоминающее устройство 108 может обеспечить выделенную для слоя область памяти, предназначенную для соответствующих слоев сети 180 CNN. В результате область памяти, хранящая данные, больше не требующиеся на этапе использования, может использоваться повторно. Ниже более подробно описаны конфигурация запоминающего устройства 108 и реализация выделенных для слоя областей памяти.

Система базы данных

[116] Сервер 106 связан с системой 120 базы данных. В общем случае система 120 базы данных способна хранить информацию, полученную и/или сформированную сервером 106 во время обработки. Например, система 120 базы данных способна принимать с сервера 106 данные, полученные и/или сформированные сервером 106 во время обработки, для временного и/или постоянного хранения и выдавать сохраненные данные серверу 106 для дальнейшего их использования.

[117] В некоторых вариантах осуществления изобретения система 120 базы данных может хранить данные поисковой системы. В общем случае данные поисковой системы, хранящиеся в системе 120 базы данных, могут содержать данные, позволяющие серверу 106 предоставлять сервисы поисковой системы пользователям поисковой системы 130. В некоторых вариантах осуществления изобретения данные поисковой системы могут содержать данные о большом количестве контент-ресурсов (например, документов), полученные приложением обходчика (не показано). Таким образом, система 120 базы данных может предоставлять серверу 106 доступ к большому количеству документов во время операций поиска документов.

[118] Следует отметить, что сервер 106 может выполнять приложение обходчика в качестве части поисковой системы 130. В общем случае приложение обходчика может использоваться сервером 106 для «посещения» ресурсов, доступных через сеть 110 связи, и их получения или скачивания для дальнейшего использования. Например, приложение обходчика может быть использовано сервером 106 для доступа ко множеству серверов (не показаны) для получения или скачивания документов, представляющих собой веб-страницы, содержащиеся на множестве серверов ресурсов. Предполагается, что приложение обходчика может периодически выполняться сервером 106 с целью получения или загрузки документов, которые были обновлены и/или стали доступными через сеть 110 связи после предыдущего выполнения приложения обходчика.

[119] Следует отметить, что данные о большом количестве контент-ресурсов могут храниться в системе 120 базы данных в индексированном формате, т.е. система 120 базы данных может хранить известную в данной области техники структуру индексации, например, инвертированный индекс контент-ресурсов. В частности, система 120 базы данных может хранить множество списков вхождений, связанных с соответствующими терминами (например, со словами), идентифицированными в контенте контент-ресурсов. По сути, список вхождений указывает на множество контент-ресурсов, в контенте которых содержится соответствующий термин.

[120] В некоторых вариантах осуществления изобретения данные поисковой системы, хранящиеся в системе 120 базы данных, могут содержать информацию о поисках, ранее выполненных поисковой системой 130. Например, данные поисковой системы могут содержать данные запроса, связанные с соответствующими запросами. Также предполагается, что данные поисковой системы, хранящиеся в системе 120 базы данных, могут содержать информацию о контент-ресурсах, предоставленных поисковой системой 130 в качестве результатов поиска. Данные ресурса, связанные с контент-ресурсом, могут быть различных видов и на них не накладывается каких-либо ограничений.

[121] Система 120 базы данных также способна хранить данные спектрограммы и данные сигнала. В общем случае эти данные спектрограммы и данные сигнала могут быть использованы сервером 106 для обучения сети 180 CNN системы 140 TTS. В по меньшей мере некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии данные спектрограммы и данные сигнала могут храниться попарно. Иными словами, система 120 базы данных может хранить пары спектрограмма-сигнал, сформированные на основе распространенных речевых фрагментов. Например, данные сигнала из такой пары могут соответствовать звуковому представлению соответствующего речевого фрагмента (в аудиоформате), а данные спектрограммы из такой пары - двумерному представлению (например, зависимости частоты звукового сигнала от времени) соответствующего речевого фрагмента (в двумерном формате).

[122] Как описано выше, сети CNN также используются для выполнения преобразования TTS. В таком случае вместо использования двумерных данных изображений, как в системе компьютерного зрения, сети CNN обучаются на двумерном представлении акустических данных речевого фрагмента. Иными словами, сервер 106 может обучать сеть 180 CNN на основе представлений звука, подобных спектрограммам.

[123] В общем случае во время обучения сети 180 CNN сервер 106 может получать пары спектрограмма-сигнал от системы 120 базы данных и использовать их в качестве обучающих наборов для выполнения большого количества итераций обучения. Сервер 106 способен формировать входные данные на основе данных спектрограммы и предоставлять их сети 180 CNN, которая в ответ формирует выходные данные. Эти выходные данные сравниваются с данными сигнала из соответствующей пары спектрограмма-сигнал (прогноз сравнивается с целью). На основе этого сравнения сервер 106 может формировать одну или несколько оценок для «настройки» сети 180 CNN таким образом, чтобы она лучше прогнозировала данные сигнала на основе данных спектрограммы.

[124] Дополнительные подробности этапа обучения сети 180 CNN опущены для простоты. Достаточно сказать, что на основе обучающих наборов данных, подобных описанным выше, в сети 180 CNN может быть выполнено множество процедур обучения. Тем не менее, следует отметить, что разработчики настоящей технологии разработали способы и системы, позволяющие сети 180 CNN более эффективно формировать голосовые ответы на этапе ее использования.

[125] В частности, как более подробно описано ниже, в по меньшей мере некоторых вариантах осуществления настоящей технологии сервер 106 может использовать сеть 180 CNN на этапе ее использования таким способом, который позволяет (а) уменьшать общее количество вычислительных операций, выполняемых сетью 180 CNN для формирования звукового вывода, и (б) уменьшать общий объем памяти, требуемой для сохранения внутренних данных, обрабатываемых сетью 180 CNN при формировании звукового вывода. Таким образом, использование сети 180 CNN на этапе ее использования согласно некоторым вариантам осуществления настоящей технологии позволяет обеспечить технический эффект, заключающийся в более быстром предоставлении звукового сигнала 154 пользователю 102 (вследствие меньшего количества выполняемых вычислений) и/или в уменьшенном объеме ресурсов памяти, требуемых для формирования звукового вывода.

Система TTS

[126] Ниже со ссылкой на фиг. 2 описано использование сервером 106 текстового ввода 200 с целью формирования входных данных для сети 180 CNN. Сервер 106 может получать текстовый ввод 200 множеством способов. В не имеющем ограничительного характера примере текстовый ввод 200 может представлять собой контент, который должен быть предоставлен в качестве ответа на запрос пользователя (полученный из речевого фрагмента пользователя). Таким образом, в некоторых вариантах осуществления изобретения сервер 106 может формировать текстовый ввод 200 с использованием поисковой системы 130.

[127] Независимо от того, как сервер 106 получает и/или формирует текстовый ввод 200, задача заключается в обработке текстового ввода 200 системой 140 TTS для формирования звукового вывода 350 (звукового представления текстового ввода 200) таким образом, чтобы он мог быть предоставлен пользователю 102 в качестве формируемого компьютером речевого фрагмента. С этой целью система 140 TTS содержит процедуру 202 преобразования текста в спектрограмму, которая при выполнении сервером 106 способна формировать спектрограмму 204 на основе текстового ввода 200.

[128] На реализацию процедуры 202 преобразования текста в спектрограмму не накладывается каких-либо особых ограничений. В не имеющем ограничительного характера примере сервер 106 может использовать алгоритм MLA, обученный формированию данных спектрограммы на основе текстового ввода. В одном не имеющем ограничительного характера варианте осуществления настоящей технологии процедура 202 преобразования текста в спектрограмму может быть реализована с использованием архитектуры машинного обучения «Tacotron» с целью преобразования одной последовательности в другую последовательность для формирования амплитудной спектрограммы из последовательности символов. В некоторых вариантах осуществления изобретения спектрограмма 204 может представлять собой мел-спектрограмму, т.е. одна из осей спектрограммы может соответствовать мел-шкале.

[129] Следует отметить, что сервер 106 может использовать данные из спектрограммы 204 для формирования входных данных 208 сети CNN, содержащих множество предназначенных для итерации наборов данных. Например, сервер 106 может выполнять процедуру 206 предварительной обработки на этапе использования, когда процессор 106 разделяет информацию из спектрограммы 204 в соответствии с одним или несколькими интервалами времени и формирует таким образом первые предназначенные для итерации данные 210, вторые предназначенные для итерации данные 220, третьи предназначенные для итерации данные 230 и четвертые предназначенные для итерации данные 240. Следует отметить, что предназначенные для итерации данные связаны с соответствующим интервалом времени в спектрограмме 204. Иными словами, сервер 106 может формировать предназначенные для итерации данные на основе отметок времени из данных спектрограммы.

[130] Сервер 106 может выполнять несколько итераций этапа использования сети 180 CNN для формирования звукового вывода 350 для текстового ввода 200 (см. фиг. 3). Как показано, в этом случае сервер 106 для формирования звукового вывода 350 способен выполнять четыре итерации этапа использования сети 180 CNN.

[131] Например, в первый момент времени, соответствующий первой итерации 301 этапа использования, сервер 106 вводит первые предназначенные для итерации данные 210 в сеть 180 CNN (обученную), способную формировать первый сегмент 310 сигнала. В этом же примере во второй момент времени, соответствующий второй итерации 302 этапа использования, сервер 106 вводит вторые предназначенные для итерации данные 220 в сеть 180 CNN, способную формировать второй сегмент 320 сигнала. В этом же примере в третий момент времени, соответствующий третьей итерации 303 этапа использования, сервер 106 вводит третьи предназначенные для итерации данные 230 в сеть 180 CNN, способную формировать третий сегмент 330 сигнала. В этом же примере в четвертый момент времени, соответствующий четвертой итерации 304 этапа использования, сервер 106 вводит четвертые предназначенные для итерации данные 240 в сеть 180 CNN, способную формировать четвертый сегмент 340 сигнала. Таким образом, расположенные в таком порядке первый сегмент 310 сигнала, второй сегмент 320 сигнала, третий сегмент 330 сигнала и четвертый сегмент 340 сигнала представляют собой голосовой ответ 350, сформированный сетью 180 CNN для текстового ввода 200.

[132] Следует отметить, что первая итерация 301 этапа использования, вторая итерация 302 этапа использования, третья итерация 303 этапа использования и четвертая итерация 304 этапа использования следуют во времени последовательно друг за другом. Иными словами, итерации этапа использования из набора итераций этапа использования (не обозначен), выполняемые сервером 106 для формирования соответствующих сегментов сигнала звукового вывода 350, выполняются последовательно во времени. Следовательно, соответствующие сегменты сигнала звукового вывода 350 формируются последовательно во времени.

[133] Также следует отметить, что серверу 106 может не требоваться ожидание выполнения всех итераций этапа использования из этого набора до инициирования передачи звукового вывода 350 электронному устройству 104 (см. фиг. 1) для его воспроизведения в качестве звукового сигнала 154. Как описано выше, сервер 106 может передавать голосовой ответ 350 в реальном времени электронному устройству 104 в виде сегментов. Например, в первый момент времени, когда сформирован первый сегмент 310 сигнала, сервер 106 может инициировать передачу первого сегмента 310 сигнала электронному устройству 104 без необходимости формирования всего звукового вывода 350 к этому моменту времени. Это позволяет повысить скорость реагирования приложения 105 IPA, поскольку между получением звукового сигнала 152 и моментом времени начала предоставления звукового сигнала 154 (первого сегмента 310 сигнала) проходит меньше времени.

[134] Кроме того, последовательность ввода в сеть 180 CNN предназначенных для итерации данных во время соответствующих итераций этапа использования соответствует последовательности расположения предназначенных для итерации данных в спектрограмме 204 (см. фиг. 2). Как описано ниже, на текущей итерации этапа использования в дополнение к соответствующим предназначенным для итерации данным, введенным на этой итерации этапа использования, сеть 180 CNN при формировании соответствующего сегмента сигнала может использовать по меньшей мере часть ранее введенных и обработанных предназначенных для итерации данных. Иными словами, сеть 180 CNN может формировать второй сегмент 320 сигнала на основе (а) вторых предназначенных для итерации данных 220 и (б) по меньшей мере части первых предназначенных для итерации данных 210, доступных внутри сети 180 CNN, таким образом, в известном смысле, повторно используя по меньшей мере часть первых предназначенных для итерации данных 210, доступных внутри сети 180 CNN, вместо формирования новых данных.

[135] Ниже со ссылкой на фиг. 4 более подробно описано выполнение сервером 106 первой итерации 301 этапа использования и второй итерации 302 этапа использования (т.е. двух последовательных итераций этапа использования из набора итераций этапа использования для формирования звукового вывода 350). В частности, на фиг. 4 приведены представление 400 первой итерации 301 этапа использования и представление 490 второй (следующей) итерации 302 этапа использования, которые описаны ниже.

[136] В общем случае, на первой итерации 301 этапа использования (а) сервер 106 предоставляет первые предназначенные для итерации данные 210 входному слою 402 сети 180 CNN, (б) сеть 180 CNN обрабатывает эти данные с помощью множества 410 скрытых слоев, и (в) сервер 106 получает от выходного слоя 404 сети 180 CNN первый сегмент 310 сигнала.

[137] Следует отметить, что множество скрытых слоев содержит i-й скрытый слой 420, первый скрытый слой 430, второй скрытый слой 440 и т.д. В представленном на фиг. 4 не имеющем ограничительного характера примере первый скрытый слой 430 использует данные, рассчитанные i-м скрытым слоем 420, второй скрытый слой 440 использует данные, рассчитанные первым скрытым слоем 430, и т.д. Таким образом, можно сказать, что первый скрытый слой 430 и второй скрытый слой 440 представляют собой последовательные слои сети 180 CNN, поскольку второй скрытый слой 440 обрабатывает данные, рассчитанные первым скрытым слоем 430.

[138] Также следует отметить, что первый скрытый слой 430 и второй скрытый слой 440 представляют собой соответствующие сверточные слои сети 180 CNN. Например, как показано на фиг. 4, первый скрытый слой 430 содержит первый сверточный фильтр 432, а второй скрытый слой 440 содержит второй сверточный фильтр 442. В общем случае первый скрытый слой 430 получает данные тензора, рассчитанные предыдущим скрытым слоем (в этом случае i-м скрытым слоем 420) и сохраненные в запоминающем устройстве 108, и применяет первый сверточный фильтр 432 в отношении этих данных тензора для формирования первых данных 434 тензора. Следует отметить, что первый скрытый слой 430 также может содержать функцию активации, применяемую в отношении выходных данных первого сверточного фильтра 432 для формирования первых данных 434 тензора, несмотря на то, что это не показано для простоты.

[139] Кроме того, первые данные 434 тензора, хранящиеся в запоминающем устройстве 108, затем используются вторым скрытым слоем 440. Например, второй скрытый слой 440 может применять второй сверточный фильтр 442 в отношении первых данных 434 тензора, хранящихся в памяти 108, для формирования вторых данных 444 тензора. Предполагается, что второй скрытый слой 440 может обрабатывать первые данные 434 тензора подобно тому, как первый скрытый слой 430 обрабатывает данные тензора из предыдущего скрытого слоя, применяя второй сверточный фильтр 442 вместо первого сверточного фильтра 432. Также предполагается, что вторые данные 444 тензора могут быть обработаны следующим (за вторым скрытым слоем 440) скрытым слоем подобно тому, как второй скрытый слой обрабатывает первые данные 434 тензора из первого скрытого слоя 430, и т.д.

[140] Следует отметить, что первые данные 434 тензора представляют собой данные тензора, сохраненные в запоминающем устройстве 108 для первого скрытого слоя 430 на первой итерации 301 этапа использования, и что вторые данные 444 тензора представляют собой данные тензора, сохраненные в запоминающем устройстве 108 для второго скрытого слоя 440 на первой итерации 301 этапа использования. В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что размер первых данных 434 тензора при сохранении в памяти 108 может зависеть от количества предназначенных для итерации данных, доступных для первой итерации 301 этапа использования, т.е. размер первых данных 434 тензора может зависеть от количества данных в первых предназначенных для итерации данных 210.

[141] Разработчики настоящей технологии установили, что часть первых данных 434 тензора, сохраненных для первого скрытого слоя 430 на первой итерации 301 этапа использования, идентична части данных тензора, которые должны быть рассчитаны первым скрытым слоем 430 на второй (следующей) итерации 302 этапа использования. Таким образом, как с учетом настоящего описания должно быть понятно специалисту в данной области, разработчики настоящей технологии разработали способы и системы, в которых часть первых данных 434 тензора, хранящихся в памяти 108, может быть повторно использована вместо расчета новых данных на второй итерации 302 этапа использования. Разработчики настоящей технологии установили, что поскольку часть данных тензора, которые должны быть рассчитаны первым скрытым слоем 430 на второй итерации 302 этапа использования, идентична (или по меньшей мере по существу идентична) части первых данных 434 тензора, рассчитанных на первой итерации 301 этапа использования, то выгодно повторно использовать (а не заново рассчитывать) эту часть на второй итерации 302 этапа использования. Как описано выше, при использовании сетей CNN для преобразования TTS может потребоваться большое количество вычислительных ресурсов, поэтому предотвращение избыточных расчетов обеспечивает более эффективное управление ресурсами.

[142] Следует отметить, что первые данные 434 тензора содержат часть 436 и данные 450 фрагмента тензора (см. фиг. 4). В контексте настоящего описания данные 450 фрагмента тензора соответствуют части первых данных 434 тензора, которые могут быть определены и повторно использованы на следующей итерации этапа использования вместо повторного расчета новых данных первым скрытым слоем 430. Также следует отметить, что данные 450 фрагмента тензора представляют собой «последнюю часть» первых данных 434 тензора при сохранении в запоминающем устройстве 108.

[143] В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что размер данных 450 фрагмента тензора, подлежащих повторному использованию, может быть определен на основе гиперпараметра второго сверточного фильтра 442 второго скрытого слоя 440. В не имеющем ограничительного характера примере гиперпараметры второго сверточного фильтра 442 могут включать в себя параметр размера ядра и/или параметр шага и/или параметр дилатации. Также предполагается, что местоположение данных 450 фрагмента тензора в памяти 108 может быть определено как последняя часть первых данных 434 тензора заранее заданного размера (например, определенного на основе гиперпараметров второго сверточного фильтра 442) при сохранении в запоминающем устройстве 108.

[144] Сервер 106 способен выполнять вторую итерацию 302 этапа использования согласно представлению 490. В общем случае, на второй итерации 302 этапа использования (а) сервер 106 предоставляет вторые предназначенные для итерации данные 220 входному слою 402 сети 180 CNN, (б) сеть 180 CNN обрабатывает эти данные с помощью множества 410 скрытых слоев и (в) сервер 106 получает от выходного слоя 404 сети 180 CNN второй сегмент 320 сигнала. Тем не менее, следует отметить, что в некоторых вариантах осуществления настоящей технологии в дополнение ко вторым предназначенным для итерации данным 220 сеть 180 CNN может также использовать часть 215 первых предназначенных для итерации данных 210, которые доступны внутри сети 180 CNN на второй итерации 302 этапа использования.

[145] На второй итерации 302 этапа использования первый скрытый слой 430 получает данные тензора, рассчитанные предыдущим скрытым слоем (в этом случае i-м скрытым слоем 420) и сохраненные в запоминающем устройстве 108, и применяет первый сверточный фильтр 432 в отношении этих данных тензора для формирования вторых данных 452 тензора. Следует отметить, что в этом случае второй скрытый слой 440 может применять второй сверточный фильтр 442 в отношении (а) вторых данных 452 тензора и (б) данных 450 фрагмента тензора из предыдущей итерации этапа использования. Иными словами, на второй итерации 302 этапа использования первый скрытый слой 430 рассчитывает только вторые данные 452 тензора, а входные данные второго скрытого слоя 440 можно назвать «комбинированными» данными 454 тензора, содержащими (а) вторые данные 452 тензора из второй итерации этапа использования первого скрытого слоя 430 и (б) данные 450 фрагмента тензора из первой итерации этапа использования первого скрытого слоя 430.

[146] Предполагается, что на второй итерации 302 этапа использования первый скрытый слой 430 способен формировать только вторые данные 452 тензора, даже если второй скрытый слой 440 должен обрабатывать комбинированные данные 454 тензора. Это объясняется тем, что в контексте настоящей технологии на второй итерации 302 этапа использования первый скрытый слой 430 должен рассчитывать только вторые данные 452 тензора без выполнения избыточных вычислений для формирования избыточных данных, идентичных данным 450 фрагмента тензора. Таким образом, можно сказать, что на второй итерации 302 этапа использования входные данные второго скрытого слоя 440 содержат (а) вторые данные 452 тензора, сформированные первым скрытым слоем 430 на второй итерации 302 этапа использования, и (б) данные 450 фрагмента тензора, сформированные первым скрытым слоем 430 на первой итерации 301 этапа использования.

[147] Как описано выше, предотвращение расчета избыточных данных первым скрытым слоем 430 на второй итерации 302 этапа использования (т.е. данных 450 фрагмента тензора, которые уже хранятся в памяти 108) обеспечивает меньшее количество вычислительных операций, требуемых серверу 106 для формирования второго сегмента 320 сигнала.

[148] По этой причине в по меньшей мере некоторых вариантах осуществления настоящей технологии первый скрытый слой 430 способен формировать вторые данные 452 тензора на второй итерации 302 этапа использования, которая исключает избыточные данные фрагмента тензора, идентичные (или в основном идентичные) данным 450 фрагмента тензора из первых данных 434 тензора. Очевидно, что благодаря способности первого скрытого слоя 430 формировать вторые данные 452 тензора без избыточных данных фрагмента тензора, для этого требуется меньше вычислительных операций, чем для формирования вторых данных 452 тензора и избыточных данных фрагмента тензора.

[149] Следует отметить, что второй сверточный фильтр 442 второго скрытого слоя 440 применяется в отношении комбинированных данных 454 тензора для формирования третьих данных 456 тензора. Таким образом, можно сказать, что второй сверточный фильтр 442 второго скрытого слоя 440 применяется в отношении данных 450 фрагмента тензора, рассчитанных во время предыдущей итерации этапа использования, и в отношении вторых данных 452 тензора, рассчитанных во время текущей итерации этапа использования (которая исключает избыточные данные фрагмента тензора, идентичные данным 450 фрагмента тензора).

[150] Для лучшей иллюстрации этого на фиг. 5 приведены представление 500 способа применения второго сверточного фильтра 442 в отношении данных тензора первого скрытого слоя 430 на первой итерации 301 этапа использования и представление 550 способа применения второго сверточного фильтра 442 в отношении данных тензора первого скрытого слоя 430 на второй итерации 302 этапа использования.

[151] Как описано выше, на первой итерации 301 этапа использования первый скрытый слой 430 формирует и сохраняет в запоминающем устройстве 108 первые данные 434 тензора. Первые данные 434 тензора содержат часть 436 и данные 450 фрагмента тензора, сохраненные последовательно в запоминающем устройстве 108. Сервер 106 применяет второй сверточный фильтр 442 в отношении первых данных 434 тензора (т.е. сервер 106 выполняет операцию 502 свертки на первой итерации 301 этапа использования) и формирует таким образом вторые данные 444 тензора. Как описано выше, в дополнение к операции 502 свертки сервер 106 может также применять функцию активации второго скрытого слоя 440 для формирования вторых данных 444 тензора, но в данном примере это опущено для простоты.

[152] На второй итерации 302 этапа использования первый скрытый слой 430 формирует вторые данные 452 тензора и сохраняет вторые данные 452 тензора в запоминающем устройстве 108 последовательно с первыми данными 434 тензора. Как описано выше, данные 450 фрагмента тензора представляют собой последнюю часть (заранее заданного размера) первых данных 434 тензора, сохраненных в памяти для первого скрытого слоя 430. Это означает, что вторые данные 452 тензора сохраняются (записываются) в запоминающем устройстве 108 последовательно с данными 450 фрагмента тензора. Сервер 106 применяет второй сверточный фильтр 442 в отношении комбинированных данных 454 тензора (т.е. сервер 106 выполняет операцию 552 свертки на второй итерации 302 этапа использования) и формирует таким образом третьи данные 456 тензора. Как описано выше, в дополнение к операции 552 свертки сервер 106 может также применить функцию активации второго скрытого слоя 440 для формирования третьих данных 456 тензора, но в данном примере это опущено для простоты.

[153] В результате, как показано на фиг. 5, сервер 106 способен использовать часть данных тензора, рассчитанных скрытым слоем на текущей итерации этапа использования, (а) для формирования данных тензора следующего скрытого слоя на этой итерации этапа использования и (б) для формирования по меньшей мере части данных тензора следующего скрытого слоя на следующей итерации этапа использования.

[154] Кроме того, как описано выше, поскольку вторые данные 452 тензора, сформированные первым скрытым слоем 430, не содержат избыточных данных фрагмента тензора, идентичных данным 450 фрагмента тензора, то для хранения данных тензора, сформированных первым скрытым слоем 430, может требоваться меньший общий объем памяти.

[155] В дополнительных вариантах осуществления настоящей технологии предполагается, что конфигурация второго скрытого слоя 440 может быть подобна конфигурации первого скрытого слоя 430, несмотря на то, что на фиг. 4 и 5 это не показано для простоты. Иными словами, данные фрагмента тензора из вторых данных 444 тензора, сформированных на первой итерации 301 этапа использования, могут использоваться на первой итерации 301 этапа использования для формирования первого сегмента 310 сигнала, а также повторно использоваться (вместо расчета заново) на второй итерации 302 этапа использования для формирования второго сегмента 320 сигнала.

[156] В других вариантах осуществления настоящей технологии также предполагается, что первый скрытый слой 430 может иметь несколько следующих за ним скрытых слоев. Например, могут быть разработаны некоторые архитектуры сетей CNN, в которых выходные данные первого скрытого слоя 430 являются входными данными для нескольких (последующих) вторых скрытых слоев. В этих вариантах осуществления изобретения в первых данных 434 тензора может определяться более одних данных фрагмента тензора для соответствующих вторых скрытых слоев подобно тому, как это описано выше (например, имеющих соответствующие заранее заданные размеры, зависящие от гиперпараметров соответствующих сверточных фильтров соответствующих нескольких вторых скрытых слоев). В результате соответствующие данные фрагмента тензора могут использоваться на текущей итерации этапа использования соответствующими слоями из числа вторых скрытых слоев, а также повторно использоваться (а не рассчитываться заново) на следующей итерации этапа использования соответствующими слоями из числа нескольких вторых скрытых слоев.

[157] Ниже со ссылкой на фиг. 6 описано определение сервером 106 данных 450 фрагмента тензора в запоминающем устройстве 108, использование сервером 106 данных 450 фрагмента тензора на текущей итерации этапа использования при хранении данных тензора в запоминающем устройстве 108 и повторное использование сервером 106 данных 450 фрагмента тензора на следующей итерации этапа использования при хранении данных тензора в памяти 108.

[158] На фиг. 6 приведено представление 600 хранения в запоминающем устройстве 108 данных тензора для первого скрытого слоя 430 и для второго скрытого слоя 440 на второй итерации 302 этапа использования. Как показано, способ хранения данных тензора в запоминающем устройстве 108 может включать в себя множество шагов, включая шаги 602, 604, 606, 608 и 610.

[159] Тем не менее, следует отметить, что представленный на фиг. 5 не имеющий ограничительного характера пример упрощен в иллюстративных целях и что в некоторых вариантах осуществления настоящей технологии (а) данные фрагмента тензора могут быть определены в данных тензора первого скрытого слоя 430 на каждой итерации этапа использования и (б) данные фрагмента тензора могут быть определены в данных тензора второго скрытого слоя 440 на каждой итерации этапа использования (что опущено на фиг. 5 для простоты). Ниже со ссылкой на фиг. 6 описано определение данных фрагмента тензора в данных тензора первого скрытого слоя 430 и второго скрытого слоя 440 на каждой итерации этапа использования в по меньшей мере некоторых вариантах осуществления изобретения.

[160] Как описано выше, в некоторых вариантах осуществления настоящей технологии запоминающее устройство 108 может содержать выделенные для слоя области памяти, предназначенные для соответствующих скрытых слоев сети CNN 180. В представленном на фиг. 6 не имеющем ограничительного характера примере первый скрытый слой 430 связан с первой выделенной для слоя областью 620 памяти в запоминающем устройстве 108, а второй скрытый слой 440 связан со второй выделенной для слоя областью 630 памяти в запоминающем устройстве 108. Предполагается, что первая выделенная для слоя область 620 памяти может быть определена с помощью пары границ 622 и 624 в запоминающем устройстве 108, а вторая выделенная для слоя область 630 памяти может быть определена с помощью пары границ 632 и 634 в запоминающем устройстве 108. Следует отметить, что граница 622 указывает на начальную позицию первой выделенной для слоя области 620 памяти, а граница 624 указывает на конечную позицию первой выделенной для слоя области 620 памяти. Аналогично, граница 632 указывает на начальную позицию второй выделенной для слоя области 630 памяти, а граница 634 указывает на конечную позицию второй выделенной для слоя области 630 памяти.

[161] Следует отметить, что первая выделенная для слоя область 620 памяти, вторая выделенная для слоя область 630 памяти, пара границ 622, 624 и пара границ 632, 634 определяются в этом качестве только на шаге 602 лишь для упрощения.

[162] Предполагается, что запоминающее устройство 108 может обеспечивать хранение в выделенной для слоя области памяти, предназначенной для соответствующего скрытого слоя, данных тензора, формируемых соответствующим скрытым слоем на итерациях этапа использования сети 180 CNN.

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

[164] Следует отметить, что флаги 626 и 628 используются для записи данных тензора первого скрытого слоя 430 в первую выделенную для слоя область 620 памяти (см. фиг. 6). Аналогично, флаги 636 и 638 используются для записи данных тензора второго скрытого слоя 440 во вторую выделенную для слоя область 630 памяти.

[165] Пусть положение флагов 626, 628, 636 и 638, показанных для шага 602, соответствует моменту завершения первой итерации 301 этапа использования. Тогда на шаге 602 флаги 626 и 628 указывают на начальную позицию и на конечную позицию, соответственно, данных 450 фрагмента тензора в запоминающем устройстве 108. Кроме того, на шаге 602 флаги 636 и 638 указывают на начальную позицию и на конечную позицию, соответственно, данных 650 фрагмента тензора из вторых данных 444 тензора второго скрытого слоя 440 (предполагается, что второй скрытый слой 440 реализован подобно первому скрытому слою 430 и следующий скрытый слой способен использовать данные 650 фрагмента тензора для формирования первого сегмента 310 сигнала, а также повторно использовать данные 650 фрагмента тензора для формирования второго сегмента 320 сигнала).

[166] Как описано выше, размер данных 450 фрагмента тензора может зависеть от гиперпараметров второго сверточного фильтра 442. Аналогично, данные 650 фрагмента тензора могут зависеть от гиперпараметров сверточного фильтра скрытого слоя, следующего за вторым скрытым слоем 440.

[167] На шаге 604 флаг (указатель) 628 перемещается в новую позицию в запоминающем устройстве 108 и область памяти между позициями флага 628 на шаге 602 и на шаге 604 заполняется вторыми данными 452 тензора первого скрытого слоя 430, рассчитанными на второй итерации 302 этапа использования. Например, как описано выше, размер вторых данных 452 тензора (и, следовательно, величина сдвига флага 628 на шаге 604) в запоминающем устройстве 108 зависит от количества дополнительных входных данных, доступных для второй итерации этапа использования (количество вторых предназначенных для итерации данных 220).

[168] На шаге 606 флаг (указатель) 638 перемещается в новую позицию в запоминающем устройстве 108 и область памяти между позициями флага 638 на шаге 602 и на шаге 604 заполняется третьими данными 456 тензора второго скрытого слоя 440, рассчитанными на второй итерации 302 этапа использования. Сервер 106 может выполнять вышеупомянутую операцию 552 свертки в отношении данных 450 фрагмента тензора и вторых данных 452 тензора для формирования и сохранения третьих данных 456 тензора.

[169] На шаге 608 флаг (указатель) 626 перемещается в новую позицию в запоминающем устройстве 108. Как показано, на шаге 608 флаги 626 и 628 определяют данные 660 фрагмента тензора из вторых данных 452 тензора. Следует отметить, что сервер 106 может использовать данные 660 фрагмента тензора на второй итерации 302 этапа использования и во время третьей итерации 303 этапа использования подобно тому, как данные 450 фрагмента тензора используются на первой итерации 301 этапа использования и второй итерации 302 этапа использования (это опущено в описании фиг. 5 для простоты).

[170] Предполагается, что размер данных 660 фрагмента тензора может зависеть от гиперпараметров второго сверточного фильтра 442. Таким образом, предполагается, что расстояние, на которое флаг 626 перемещается на шаге 608, может быть по меньшей мере частично определено на основе гиперпараметров второго сверточного фильтра 442. Например, после определения размера данных 660 фрагмента тензора на основе гиперпараметров второго сверточного фильтра 442 флаг 626 может быть перемещен из позиции на шаге 606 в позицию на шаге 608 так, чтобы расстояние между флагами 626 и 628 определяло последнюю область памяти с размером, равным определенному таким образом размеру данных 660 фрагмента тензора.

[171] Кроме того, сверточный фильтр скрытого слоя, следующего за вторым скрытым слоем, может быть использован для применения операции свертки в отношении данных 650 фрагмента тензора и третьих данных 456 тензора подобно тому, как второй сверточный фильтр 442 второго скрытого слоя 440 может быть использован для применения операции 552 свертки в отношении данных 450 фрагмента тензора и вторых данных 452 тензора, несмотря на то, что это не показано.

[172] Затем на шаге 610 флаг (указатель) 636 перемещается в новую позицию в запоминающем устройстве 108. Как показано, на шаге 610 флаги 636 и 638 определяют данные 670 фрагмента тензора из третьих данных 456 тензора. Следует отметить, что сервер 106 может использовать данные 670 фрагмента тензора на второй итерации 302 этапа использования и во время третьей итерации 303 этапа использования подобно тому, как данные 650 фрагмента тензора используются на первой итерации 301 этапа использования и второй итерации 302 этапа использования.

[173] Предполагается, что размер данных 670 фрагмента тензора может зависеть от гиперпараметров сверточного фильтра скрытого слоя, следующего за вторым скрытым слоем 440. Таким образом, предполагается, что расстояние, на которое флаг 636 перемещается на шаге 610, может быть по меньшей мере частично определено (или заранее задано) на основе гиперпараметров сверточного фильтра скрытого слоя, следующего за вторым скрытым слоем 440. Например, после определения размера данных 670 фрагмента тензора на основе гиперпараметров сверточного фильтра скрытого слоя, следующего за вторым скрытым слоем 440, флаг 636 перемещается из позиции на шаге 608 в позицию на шаге 610 так, чтобы расстояние между флагами 636 и 638 определяло последнюю область памяти с размером, равным определенному таким образом размеру данных 670 фрагмента тензора.

[174] В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что сервер 106 может управлять запоминающим устройством 108 на каждой соответствующей итерации этапа использования подобно тому, как сервер 106 может управлять запоминающим устройством 108 в не имеющем ограничительного характера примере, представленном на фиг. 6.

[175] Следует также отметить, что в некоторых вариантах осуществления изобретения, где первый скрытый слой 430 имеет несколько вторых скрытых слоев, запоминающее устройство 108 может использовать несколько соответствующих пар флагов в первой выделенной для слоя области 620 памяти для нескольких соответствующих вторых скрытых слоев подобно тому, как пара флагов 626 и 628 реализована для второго скрытого слоя 440.

[176] В некоторых вариантах осуществления настоящей технологии сервер 106 может выполнять представленный на фиг. 7 способ 700 преобразования текста в речь в отношении текстового ввода для формирования звукового вывода. Ниже более подробно описаны шаги способа 700.

Шаг 702: формирование входных данных сети CNN на основе текстового ввода.

[177] Способ 700 начинается с шага 702, на котором сервер 106 может формировать входные данные 208 сети CNN (см. фиг. 2) на основе текстового ввода 200. Следует отметить, что входные данные 208 сети CNN связаны с соответствующими отметками времени. Эти отметки времени могут быть использованы для определения предназначенных для итерации входных данных для соответствующей итерации этапа использования сети 180 CNN.

[178] Например, входные данные 208 сети CNN могут быть представлены в виде спектрограммы 204. Предполагается, что входные данные 208 сети CNN могут быть сформированы на основе спектрограммы 204. В по меньшей мере одном варианте осуществления настоящей технологии сервер 106 может использовать процедуру 202 преобразования текста в спектрограмму для формирования спектрограммы 204 на основе текстового ввода 200.

Шаг 704: формирование сегмента сигнала звукового вывода на текущей итерации этапа использования сети CNN.

[179] Способ 700 продолжается на шаге 704, на котором сервер 106 может формировать сегмент сигнала звукового вывода 350 на текущей итерации этапа использования сети 180 CNN. Например, сервер 106 может формировать на первой итерации 301 этапа использования первый сегмент 310 сигнала на основе первых предназначенных для итерации данных 210, доступных для первой итерации 301 этапа использования.

[180] Следует отметить, что в качестве части шага 704 сервер 106 может сохранять в запоминающем устройстве 108 первые данные 434 тензора, рассчитанные первым скрытым слоем 430 на первой итерации 301 этапа использования. Также следует отметить, что первые данные 434 тензора содержат данные 450 фрагмента тензора. Как описано выше, данные 450 фрагмента тензора (а) используются на первой итерации 301 этапа использования для формирования первого сегмента 310 сигнала звукового вывода 350 и (б) подлежат использованию на второй итерации 302 этапа использования (следующей итерации этапа использования) сети 180 CNN для формирования второго сегмента 320 сигнала звукового вывода 350.

[181] Кроме того, следует отметить, что данные 450 фрагмента тензора могут быть идентифицированы с использованием их начальной позиции и их конечной позиции в запоминающем устройстве 108. Например, в конце первой итерации 301 этапа использования данные 450 фрагмента тензора могут быть идентифицированы с помощью текущей позиции флага 626 в запоминающем устройстве 108 и текущей позиции флага 628 в запоминающем устройстве 108.

[182] В некоторых вариантах осуществления настоящей технологии первый скрытый слой 430 может иметь функцию активации, а данные 450 фрагмента тензора из первых данных 434 тензора, сформированных на первой итерации 301 этапа использования, представляют собой выходные данные этой функции активации. Предполагается, что выходные данные первого сверточного фильтра 432 могут быть переданы функции активации, способной выдавать по меньшей мере часть первых данных 434 тензора.

[183] Также предполагается, что размер первых данных 434 тензора, формируемых и сохраняемых в запоминающем устройстве 108, может зависеть от количества предназначенных для итерации данных, доступных для первой итерации 301 этапа использования. Например, чем больше количество первых предназначенных для итерации данных 210, тем больше размер первых данных 434 тензора, подлежащих сохранению в запоминающем устройстве 108 (например, больше расстояние, на которое флаг 628 должен быть перемещен между шагами 602 и 604).

[184] В по меньшей мере некоторых вариантах осуществления настоящей технологии размер данных 450 фрагмента тензора, хранящихся в запоминающем устройстве 108, может определяться на основе гиперпараметров второго сверточного фильтра 442 второго скрытого слоя 440. Это означает, что количество данных тензора из первых данных 434 тензора, подлежащих повторному использованию на следующей итерации этапа использования, как описано выше, может быть заранее задано на основе гиперпараметров второго сверточного фильтра 442 второго скрытого слоя 440. Например, гиперпараметры второго сверточного фильтра 442 могут включать в себя параметр размера ядра и/или параметр шага и/или параметр дилатации.

[185] Как описано выше, запоминающее устройство 108 может содержать первую выделенную для слоя область 620 памяти, предназначенную для первого скрытого слоя 430, и вторую выделенную для слоя область 630 памяти, предназначенную для второго скрытого слоя 440. Первая выделенная для слоя область 620 памяти может быть определена с помощью границ 622 и 624. Вторая выделенная для слоя область 630 памяти может быть определена с помощью границ 632 и 634. В некоторых вариантах осуществления изобретения сервер 106 может использовать информацию, указывающую на пару флагов (указателей) 626 и 628 в границах 622 и 624 первой выделенной для слоя области 620 памяти. Например, как показано на шаге 602 (см. фиг. 6, где представлена первая выделенная для слоя область 620 памяти после первой итерации 301 этапа использования), флаг 626 может располагаться в первой позиции, соответствующей начальной позиции данных 450 фрагмента тензора в запоминающем устройстве 108, а флаг 628 может располагаться во второй позиции, соответствующей конечной позиции данных 450 фрагмента тензора в запоминающем устройстве 108.

Шаг 706: формирование следующего сегмента сигнала звукового вывода на следующей итерации этапа использования сети CNN.

[186] Способ 700 продолжается на шаге 706, на котором сервер 106 может формировать следующий сегмент сигнала звукового вывода 350 на следующей итерации этапа использования сети 180 CNN. Например, сервер 106 может формировать второй сегмент 320 сигнала на основе вторых предназначенных для итерации данных 220 и части 215 первых предназначенных для итерации данных 210 (доступных внутри сети). В некоторых вариантах осуществления изобретения размер вторых данных 452 тензора в памяти зависит от количества вторых предназначенных для итерации данных 220, доступных на второй итерации 302 этапа использования.

[187] Следует отметить, что в качестве части шага 706 сервер 106 способен сохранять вторые данные 452 тензора, рассчитанные первым скрытым слоем 430 на второй итерации 302 этапа использования. Как показано на фиг. 5, вторые данные 452 тензора хранятся в запоминающем устройстве 108 последовательно с первыми данными 434 тензора первого скрытого слоя 430 с первой итерации 301 этапа использования.

[188] Следует отметить, что вторые данные 452 тензора не содержат избыточных данных фрагмента тензора, идентичных данным 450 фрагмента тензора из первых данных 434 тензора. Предполагается, что сеть 180 CNN может не рассчитывать избыточные данные фрагмента тензора (или не рассчитывать заново данные 450 фрагмента тензора) на второй итерации 302 этапа использования.

[189] Следует также отметить, что вторые данные 452 тензора могут быть идентифицированы с помощью начальной позиции вторых данных 452 тензора в запоминающем устройстве 108 и конечной позиции вторых данных 452 тензора в запоминающем устройстве 108. При этом начальная позиция вторых данных 452 тензора соответствует конечной позиции данных 450 фрагмента тензора в запоминающем устройстве 108, как показано на фиг. 5.

[190] В по меньшей мере некоторых вариантах осуществления изобретения предполагается, что во время сохранения вторых данных 452 тензора флаг 628 может быть перемещен из позиции на шаге 602 в новую позицию в запоминающем устройстве 108 на шаге 604 (см. фиг. 6). В этом случае вторые данные 452 тензора могут быть сохранены в запоминающем устройстве 108 между позицией флага 628 на шаге 602 и новой позицией флага 628 на шаге 604. Как показано на фиг. 6, данные 450 фрагмента тензора и вторые данные 452 тензора хранятся последовательно в запоминающем устройстве 108 между позицией первого флага 626 на шаге 602 (и 604), соответствующей начальной позиции данных 450 фрагмента тензора, и новой позицией флага 628 на шаге 604.

[191] Следует отметить, что в качестве части шага 706 сервер 106 может применять второй сверточный фильтр 442 второго скрытого слоя 440 в отношении (а) данных 450 фрагмента тензора из первых данных 434 тензора и (б) вторых данных 452 тензора, хранящихся в запоминающем устройстве 108. Таким образом, сервер 106 с использованием второго скрытого слоя 440 способен формировать третьи данные 456 тензора, подлежащие сохранению в запоминающем устройстве 108. Как описано выше, третьи данные 456 тензора используются для формирования второго сегмента 320 сигнала звукового вывода 350.

[192] Предполагается, что сервер 106 также может сохранять третьи данные 456 тензора в запоминающем устройстве 108.

[193] Предполагается, что после первой итерации этапа использования флаг 636 может располагаться в некоторой позиции во второй выделенной для слоя области 630 памяти, как показано на фиг. 6. Флаг 638 также может располагаться в некоторой позиции во второй выделенной для слоя области 630 памяти, как показано на фиг. 6. В по меньшей мере некоторых вариантах осуществления настоящей технологии способность сервера 106 применять второй сверточный фильтр 442 в отношении (а) данных 450 фрагмента тензора из первых данных 434 тензора и (б) вторых данных 452 тензора (например, для выполнения операции 552 свертки) может включать в себя способность использования сервером 106 флагов 626 и 628 для определения хранящихся в первой выделенной для слоя области 620 памяти данных, в отношении которых вторым сверточным фильтром 442 должна применяться свертка. Например, сервер 106 может применять сверточный фильтр 442 в отношении данных, хранящихся между позицией флага 626 на шаге 602 (и на шаге 604) и новой позицией флага 628 на шаге 604. Например, сервер 106 может выполнять операцию 552 свертки в отношении данных между позициями флагов 626 и 628 на шаге 606.

[194] В некоторых вариантах осуществления изобретения сохранение третьих данных 456 тензора сервером 106 может включать в себя такое перемещение флага 638 в новую позицию в запоминающем устройстве 108, чтобы третьи данные 456 тензора сохранялись в запоминающем устройстве 108 между позицией флага 638 на шаге 604 и новой позицией флага 638 на шаге 606.

[195] Для специалиста в данной области могут быть очевидными возможные изменения и усовершенствования описанных выше вариантов осуществления настоящей технологии. Предшествующее описание приведено лишь в иллюстративных целях, а не для ограничения объема изобретения. Объем охраны настоящей технологии определяется исключительно объемом приложенной формулы изобретения.

1. Способ преобразования текста в речь, выполняемого в отношении текстового ввода для формирования звукового вывода, содержащего множество последовательных сегментов сигнала и предоставляемого пользователю электронного устройства, соединенного с сервером, где сегмент из множества последовательных сегментов сигнала формируется в реальном времени на соответствующей итерации этапа использования обученной сверточной нейронной сети (CNN), содержащей по меньшей мере первый скрытый слой и второй скрытый слой, следующий за первым скрытым слоем и способный формировать данные тензора на основе данных тензора, сформированных первым скрытым слоем на соответствующей итерации этапа использования сети CNN, при этом способ выполняется сервером и включает в себя:

- формирование сервером на основе текстового ввода входных данных сети CNN, связанных с соответствующими отметками времени, используемыми для определения предназначенных для итерации входных данных для соответствующей итерации этапа использования сети CNN;

- на текущей итерации этапа использования сети CNN: формирование сервером, использующим сеть CNN, сегмента сигнала звукового вывода на основе первых предназначенных для итерации данных, доступных для этой итерации этапа использования, при этом формирование включает в себя сохранение в памяти первых данных тензора, рассчитанных первым скрытым слоем на этой итерации этапа использования и содержащих данные фрагмента тензора, которые (а) используются на этой итерации этапа использования для формирования сегмента сигнала звукового вывода и (б) подлежат использованию на следующей итерации этапа использования сети CNN для формирования следующего сегмента сигнала звукового вывода и идентифицируются с использованием начальной позиции данных фрагмента тензора в памяти и конечной позиции данных фрагмента тензора в памяти;

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

- применение сервером сверточного фильтра второго скрытого слоя в отношении (а) данных фрагмента тензора из первых данных тензора и (б) вторых данных тензора, хранящихся в памяти, и формирования таким образом вторым скрытым слоем третьих данных тензора, подлежащих сохранению в памяти и используемых для формирования следующего сегмента сигнала звукового вывода; и

- сохранение сервером третьих данных тензора в памяти.

2. Способ по п. 1, отличающийся тем, что входные данные сети CNN представляются в виде спектрограммы.

3. Способ по п. 2, отличающийся тем, что входные данные сети CNN формируются другой обученной моделью, способной преобразовывать текстовый ввод в выходные данные спектрограммы.

4. Способ по п. 1, отличающийся тем, что память содержится в запоминающем устройстве графического процессора.

5. Способ по п. 1, отличающийся тем, что первый скрытый слой имеет функцию активации, а данные фрагмента тензора из первых данных тензора, сформированных на текущей итерации этапа использования, представляют собой выходные данные функции активации.

6. Способ по п. 1, отличающийся тем, что размер первых данных тензора в памяти зависит от количества предназначенных для итерации данных, доступных для текущей итерации этапа использования.

7. Способ по п. 1, отличающийся тем, что размер вторых данных тензора в памяти зависит от количества вторых предназначенных для итерации данных, доступных для следующей итерации этапа использования.

8. Способ по п. 1, отличающийся тем, что размер данных фрагмента тензора в памяти определен на основе гиперпараметров сверточного фильтра второго скрытого слоя.

9. Способ по п. 8, отличающийся тем, что гиперпараметры включают в себя параметр размера ядра, и/или параметр шага, и/или параметр дилатации.

10. Способ по п. 1, отличающийся тем, что память содержит выделенную для слоя область памяти, предназначенную для соответствующего скрытого слоя сети CNN и определяемую границами в памяти, при этом первая граница указывает на начальную позицию в памяти соответствующей выделенной для слоя области памяти, вторая граница указывает на конечную позицию в памяти соответствующей выделенной для слоя области памяти, а выделенная для слоя область памяти, предназначенная для соответствующего скрытого слоя, способна хранить данные тензора, сформированные соответствующим скрытым слоем на итерациях этапа использования сети CNN.

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

12. Способ по п. 11, отличающийся тем, что пара флагов содержит первый флаг и второй флаг, а пара других флагов содержит третий флаг и четвертый флаг, при этом:

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

- на следующей итерации этапа использования:

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

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

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

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

- формирования входных данных сети CNN на основе текстового ввода, связанных с соответствующими отметками времени, используемыми для определения предназначенных для итерации входных данных для соответствующей итерации этапа использования сети CNN;

- на текущей итерации этапа использования сети CNN: формирования с использованием сети CNN сегмента сигнала звукового вывода на основе первых предназначенных для итерации данных, доступных для этой итерации этапа использования, при этом для формирования сервер способен сохранять в памяти рассчитанные первым скрытым слоем на этой итерации этапа использования первые данные тензора, содержащие данные фрагмента тензора, которые (а) используются на этой итерации этапа использования для формирования сегмента сигнала звукового вывода, (б) подлежат использованию на следующей итерации этапа использования сети CNN для формирования следующего сегмента сигнала звукового вывода и могут быть идентифицированы с использованием начальной позиции данных фрагмента тензора в памяти и конечной позиции данных фрагмента тензора в памяти;

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

- применения сверточного фильтра второго скрытого слоя в отношении (а) данных фрагмента тензора из первых данных тензора и (б) вторых данных тензора, хранящихся в памяти, и формирования таким образом вторым скрытым слоем третьих данных тензора, подлежащих сохранению в памяти и используемых для формирования следующего сегмента сигнала звукового вывода; и

- сохранения третьих данных тензора в памяти.

14. Сервер по п. 13, отличающийся тем, что входные данные сети CNN представлены в виде спектрограммы.

15. Сервер по п. 14, отличающийся тем, что входные данные сети CNN сформированы другой обученной моделью, способной преобразовывать текстовый ввод в выходные данные спектрограммы.

16. Сервер по п. 13, отличающийся тем, что память содержится в запоминающем устройстве графического процессора.

17. Сервер по п. 13, отличающийся тем, что первый скрытый слой имеет функцию активации, а данные фрагмента тензора из первых данных тензора, сформированных на текущей итерации этапа использования, представляют собой выходные данные функции активации.

18. Сервер по п. 13, отличающийся тем, что размер первых данных тензора в памяти зависит от количества предназначенных для итерации данных, доступных для текущей итерации этапа использования.

19. Сервер по п. 13, отличающийся тем, что размер вторых данных тензора в памяти зависит от количества вторых предназначенных для итерации данных, доступных для следующей итерации этапа использования.

20. Сервер по п. 13, отличающийся тем, что размер данных фрагмента тензора в памяти определен на основе гиперпараметров сверточного фильтра второго скрытого слоя.

21. Сервер по п. 20, отличающийся тем, что гиперпараметры включают в себя параметр размера ядра, и/или параметр шага, и/или параметр дилатации.

22. Сервер по п. 13, отличающийся тем, что память содержит выделенную для слоя область памяти, предназначенную для соответствующего скрытого слоя сети CNN и определяемую границами в памяти, при этом первая граница указывает на начальную позицию в памяти соответствующей выделенной для слоя области памяти, вторая граница указывает на конечную позицию в памяти соответствующей выделенной для слоя области памяти, а выделенная для слоя область памяти, предназначенная для соответствующего скрытого слоя, способна хранить данные тензора, сформированные соответствующим скрытым слоем на итерациях этапа использования сети CNN.

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

24. Сервер по п. 23, отличающийся тем, что пара флагов содержит первый флаг и второй флаг, а пара других флагов содержит третий флаг и четвертый флаг, при этом:

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

- на следующей итерации этапа использования:

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

- для применения сверточного фильтра в отношении (а) данных фрагмента тензора из первых данных тензора и (б) вторых данных тензора сервер способен применять сверточный фильтр в отношении данных, сохраненных в памяти между первой позицией первого флага и новой второй позицией второго флага;

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



 

Похожие патенты:

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

Изобретение относится к вычислительной технике. Технический результат – создание машинных высказываний без видимой для пользователя задержки.

Изобретение относится к области обработки синтеза речи и интерактивных диалогов. Техническим результатом является обеспечение возможности регулировки формы и/или содержания диалогового контента, произносимого человекоподобным роботом.

Изобретение относится к вычислительным системам. Технический результат направлен на повышение точности, извлекаемой из текстов на естественном языке информации.

Изобретение относится к области обработки текстов. Технический результат заключается в обеспечении более точной обработки текста.

Изобретение относится к средствам синтеза речи по тексту. Технический результат заключается в повышении естественности человеческого голоса в синтезированной речи.

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

Изобретение относится к области сетей связи и устройств для приема и отправки сообщений через сети связи, а именно к предоставлению пользователю анимированного изображения лица отправителя сообщения. .

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