IP Library Granted Patent US 12664984
Granted Patent B1
US 12664984 · App. 18/345,473 · Granted Jun 23, 2026

Dynamic task assignment

Inventors: Brendon Jude Wilson (San Jose, CA); Prashant Jayaram Thakare (Sammamish, WA); Cameron Stuart McLeod (Newton, MA); Ritu Jain (Newcastle, WA); Jun woo Park (Austin, TX)
Assignee: Amazon Technologies, Inc.
G10L15/22G10L15/08G10L2015/088G10L2015/223
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12664984
App. No.
18/345,473
Granted
Jun 23, 2026
Kind
B1
Abstract

A system configured with local distributed computing framework that enables available compute, storage, and/or sensor resources to be leveraged across a local network. The framework can create a logical grouping of devices associated with specific functionality and select a single device best suited to perform the functionality for the group. For example, a logical grouping can include devices having desired physical proximity and the framework can select an individual device for each task/function. Thus, the framework can select the device best suited for a task dynamically as the environment and/or context changes, such as when devices connect/disconnect or available processing shifts over time. In addition, the framework enables local resources to be coordinated and/or extended across the local network, as a first device can delegate processing to a second device, receive sensor data from the second device, perform unique functionality enabled by the second device, and/or the like.

Claims (133)

1 . A computer-implemented method, the method comprising:

retrieving device data that indicates a plurality of devices associated with a user profile, the device data including (i) a first device identifier and a first network address associated with a first device and (ii) a second device identifier and a second network address associated with a second device;

selecting a subset of the plurality of devices corresponding to a first location, the subset including the first device and the second device;

determining first capability data indicating a first capability of the first device to perform wakeword detection;

determining second capability data indicating a second capability of the first device to perform user identification;

determining third capability data indicating a third capability of the second device to perform the wakeword detection;

determining fourth capability data indicating a fourth capability of the second device to perform the user identification;

selecting, using the first capability data and the third capability data, the first device to perform the wakeword detection over the second device;

selecting, using the second capability data and the fourth capability data, the second device to perform the user identification over the first device;

storing first data that includes a first association between the first device and the wakeword detection and a second association between the second device and the user identification;

sending, to the first device, second data directing the first device to enable the wakeword detection and disable the user identification;

in response to receiving the second data, enabling, by the first device, the wakeword detection and disabling the user identification;

sending, to the second device, third data directing the second device to enable the user identification and disable the wakeword detection; and

in response to receiving the third data, enabling, by the second device, the user identification and disabling the wakeword detection.

2 . The computer-implemented method of claim 1 , further comprising:

determining a first indicator of performance indicating a first quality at which the first device performs the wakeword detection;

determining a second indicator of performance indicating a second quality at which the first device performs the user identification, the second quality corresponding to a first resolution of a first camera associated with the first device;

determining a third indicator of performance indicating a third quality at which the second device performs the wakeword detection;

determining a fourth indicator of performance indicating a fourth quality at which the second device performs the user identification, the fourth quality corresponding to a second resolution of a second camera associated with the second device, the second resolution being higher than the first resolution;

selecting the first device to perform the wakeword detection based on the first capability data, the third capability data, the first indicator, and the third indicator; and

selecting the second device to perform the user identification based on the second capability data, the fourth capability data, the second indicator, and the fourth indicator.

3 . The computer-implemented method of claim 1 , further comprising:

determining that the second device is no longer detected by the plurality of devices;

removing the second device from the subset of the plurality of devices;

determining, using the third capability data, that the first device is most capable of performing the user identification from the subset of the plurality of devices; and

sending, to the first device, fourth data directing the first device to enable the user identification.

4 . The computer-implemented method of claim 1 , further comprising:

determining, using the fourth capability data and fifth capability data indicating a fifth capability of a third device to perform the user identification, that the third device is more capable of performing the user identification than the second device;

determining context data associated with the subset, the context data indicating that the third device has available processing capability;

selecting the third device to perform the user identification using the context data, the second capability data, the fourth capability data, and the fifth capability data;

storing fourth data that includes the first association and a third association between the third device and the user identification;

sending, to the second device, fifth data directing the second device to disable the user identification; and

sending, to the third device, sixth data directing the third device to enable the user identification.

5 . A computer-implemented method, the method comprising:

retrieving device data that indicates a plurality of devices associated with a user profile, the device data including (i) a first device identifier and a first network address associated with a first device and (ii) a second device identifier and a second network address associated with a second device;

selecting a subset of the plurality of devices, the subset including the first device and the second device;

determining first capability data associated with the first device, the first capability data indicating that the first device is capable of performing a first task and a second task;

determining second capability data associated with the second device, the second capability data indicating that the second device is capable of performing the first task and the second task;

selecting the first device to perform the first task using the first capability data, the second capability data, and first context data, the first context data indicating a context associated with the subset of the plurality of devices;

selecting the second device to perform the second task using the first capability data, the second capability data, and the first context data;

storing first data that includes a first association between the first device and the first task and a second association between the second device and the second task;

sending, to the first device, second data directing the first device to enable the first task and disable the second task;

in response to receiving the second data, enabling, by the first device, the first task and disabling the second task;

sending, to the second device, third data directing the second device to enable the second task and disable the first task; and

in response to receiving the third data, enabling, by the second device, the second task and disabling the first task.

6 . The computer-implemented method of claim 5 , further comprising:

determining a first indicator of performance indicating a first quality at which the first device performs the first task;

determining a second indicator of performance indicating a second quality at which the first device performs the second task;

determining a third indicator of performance indicating a third quality at which the second device performs the first task;

determining a fourth indicator of performance indicating a fourth quality at which the second device performs the second task; and

determining the first context data using the first indicator, the second indicator, the third indicator, and the fourth indicator.

7 . The computer-implemented method of claim 5 , further comprising:

determining a first value indicating how frequently the first device is selected to perform the first task;

determining a second value indicating how frequently the first device is selected to perform the second task;

determining a third value indicating how frequently the second device is selected to perform the first task;

determining a fourth value indicating how frequently the second device is selected to perform the second task; and

determining the first context data using the first value, the second value, the third value, and the fourth value.

8 . The computer-implemented method of claim 5 , further comprising:

determining that the second device is no longer detected by the plurality of devices;

removing the second device from the subset of the plurality of devices;

determining, using the first capability data, that the first device is most capable of performing the second task from the subset of the plurality of devices; and

sending, to the first device, fourth data directing the first device to enable the second task.

9 . The computer-implemented method of claim 5 , further comprising:

determining that the second device is currently performing an action;

determining, using the first capability data, that the first device is capable of performing the second task; and

sending, to the first device, fourth data directing the first device to enable the second task.

10 . The computer-implemented method of claim 5 , further comprising:

receiving a request to perform an action associated with the second task;

determining that a device state associated with the second device indicates that the second device is currently unable to perform the action;

determining, using the first capability data, that the first device is capable of performing the second task; and

sending, to the first device, fourth data directing the first device to perform the action.

11 . The computer-implemented method of claim 5 , further comprising:

receiving, from the first device, a request to perform an action;

determining a first number of devices with available processing capability from the subset;

determining, from the first number of devices, a third device configured to perform the action; and

causing the third device to execute the request.

12 . The computer-implemented method of claim 5 , wherein the first context data indicates that a third device was associated with a first processing consumption during a first time range, the method further comprising:

determining second context data, the second context data indicating that the third device is associated with a second processing consumption during a second time range, the second processing consumption lower than the first processing consumption;

selecting the third device to perform the second task using the first capability data, the second capability data, and the second context data;

storing fourth data that includes the first association and a third association between the third device and the second task;

sending, to the second device, fifth data directing the second device to disable the second task; and

sending, to the third device, sixth data directing the third device to enable the second task.

13 . A system comprising:

at least one processor; and

memory including instructions operable to be executed by the at least one processor to cause the system to:

retrieve device data that indicates a plurality of devices associated with a user profile, the device data including (i) a first device identifier and a first network address associated with a first device and (ii) a second device identifier and a second network address associated with a second device

select a subset of the plurality of devices, the subset including the first device and the second device;

determine first capability data associated with the first device, the first capability data indicating that the first device is capable of performing a first task and a second task;

determine second capability data associated with the second device, the second capability data indicating that the second device is capable of performing the first task and the second task;

select the first device to perform the first task using the first capability data, the second capability data, and first context data, the first context data indicating a context associated with the subset of the plurality of devices;

select the second device to perform the second task using the first capability data, the second capability data, and the first context data;

store first data that includes a first association between the first device and the first task and a second association between the second device and the second task;

send, to the first device, second data directing the first device to enable the first task and disable the second task;

in response to receiving the second data, enable, by the first device, the first task and disable the second task;

send, to the second device, third data directing the second device to enable the second task and disable the first task; and

in response to receiving the third data, enable, by the second device, the second task and disable the first task.

14 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

determine a first indicator of performance indicating a first quality at which the first device performs the first task;

determine a second indicator of performance indicating a second quality at which the first device performs the second task;

determine a third indicator of performance indicating a third quality at which the second device performs the first task;

determine a fourth indicator of performance indicating a fourth quality at which the second device performs the second task; and

determine the first context data using the first indicator, the second indicator, the third indicator, and the fourth indicator.

15 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

determine a first value indicating how frequently the first device is selected to perform the first task;

determine a second value indicating how frequently the first device is selected to perform the second task;

determine a third value indicating how frequently the second device is selected to perform the first task;

determine a fourth value indicating how frequently the second device is selected to perform the second task; and

determine the first context data using the first value, the second value, the third value, and the fourth value.

16 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

determine that the second device is no longer detected by the plurality of devices;

remove the second device from the subset of the plurality of devices;

determine, using the first capability data, that the first device is most capable of performing the second task from the subset of the plurality of devices; and

send, to the first device, fourth data directing the first device to enable the second task.

17 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

determine that the second device is currently performing an action;

determine, using the first capability data, that the first device is capable of performing the second task; and

send, to the first device, fourth data directing the first device to enable the second task.

18 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

receive a request to perform an action associated with the second task;

determine that a device state associated with the second device indicates that the second device is currently unable to perform the action;

determine, using the first capability data, that the first device is capable of performing the second task; and

send, to the first device, fourth data directing the first device to perform the action.

19 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

receive, from the first device, a request to perform an action;

determine a first number of devices with available processing capability from the subset;

determine, from the first number of devices, a third device configured to perform the action; and

cause the third device to execute the request.

20 . The system of claim 13 , wherein the first context data indicates that a third device was associated with a first processing consumption during a first time range, and the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:

determine second context data, the second context data indicating that the third device is associated with a second processing consumption during a second time range, the second processing consumption lower than the first processing consumption;

select the third device to perform the second task using the first capability data, the second capability data, and the second context data;

store fourth data that includes the first association and a third association between the third device and the second task;

send, to the second device, fifth data directing the second device to disable the second task; and

send, to the third device, sixth data directing the third device to enable the second task.