From dcb79fe9ad3fc6b0e8410ea441c69b49bee3ba79 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Tue, 11 Oct 2022 15:10:08 -0400 Subject: [PATCH] Spelling (#406) * spelling: baked-in Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: can Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: domain Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: from Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: into Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: multilingual Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: partition Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: peripheral Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: prediction Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: remaining Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: the Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: there Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: to Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: virtual Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- .../lessons/1-introduction-to-iot/virtual-device.md | 2 +- 2-farm/lessons/1-predict-plant-growth/README.md | 2 +- 2-farm/lessons/3-automated-plant-watering/README.md | 2 +- .../lessons/3-automated-plant-watering/wio-terminal-relay.md | 2 +- 2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md | 2 +- 2-farm/lessons/5-migrate-application-to-the-cloud/README.md | 2 +- .../lessons/2-check-fruit-from-device/pi-camera.md | 2 +- .../single-board-computer-classify-image.md | 2 +- .../2-check-fruit-from-device/virtual-device-camera.md | 2 +- .../lessons/2-check-fruit-from-device/wio-terminal-camera.md | 2 +- 5-retail/lessons/1-train-stock-detector/README.md | 4 ++-- 5-retail/lessons/2-check-stock-device/README.md | 2 +- .../code-record/wio-terminal/smart-timer/src/mic.h | 2 +- .../code-speech-to-text/wio-terminal/smart-timer/src/mic.h | 2 +- 6-consumer/lessons/1-speech-recognition/wio-terminal-audio.md | 4 ++-- 6-consumer/lessons/2-language-understanding/README.md | 2 +- 6-consumer/lessons/3-spoken-feedback/README.md | 2 +- .../code-spoken-response/wio-terminal/smart-timer/src/mic.h | 2 +- .../code-timer/wio-terminal/smart-timer/src/mic.h | 2 +- .../code/wio-terminal/smart-timer/src/mic.h | 2 +- .../4-multiple-language-support/pi-translate-speech.md | 2 +- .../virtual-device-translate-speech.md | 2 +- .../wio-terminal-translate-speech.md | 2 +- 23 files changed, 25 insertions(+), 25 deletions(-) diff --git a/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md b/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md index 7d3a30f..1700e02 100644 --- a/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md +++ b/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md @@ -159,7 +159,7 @@ Create a Python application to print `"Hello World"` to the console. If you don't have `.venv` as a prefix on the prompt, the virtual environment is not active in the terminal. -1. Launch a new VS Code Terminal by selecting *Terminal -> New Terminal, or pressing `` CTRL+` ``. The new terminal will load the virtual environment, and the the call to activate this will appear in the terminal. The prompt will also have the name of the virtual environment (`.venv`): +1. Launch a new VS Code Terminal by selecting *Terminal -> New Terminal, or pressing `` CTRL+` ``. The new terminal will load the virtual environment, and the call to activate this will appear in the terminal. The prompt will also have the name of the virtual environment (`.venv`): ```output ➜ nightlight source .venv/bin/activate diff --git a/2-farm/lessons/1-predict-plant-growth/README.md b/2-farm/lessons/1-predict-plant-growth/README.md index 3d6e1c9..6c1caa5 100644 --- a/2-farm/lessons/1-predict-plant-growth/README.md +++ b/2-farm/lessons/1-predict-plant-growth/README.md @@ -110,7 +110,7 @@ On the first day above the base temperature, the following temperatures were mea | Maximum | 16 | | Minimum | 12 | -Plugging these numbers in to our calculation: +Plugging these numbers into our calculation: * Tmax = 16 * Tmin = 12 diff --git a/2-farm/lessons/3-automated-plant-watering/README.md b/2-farm/lessons/3-automated-plant-watering/README.md index 0839892..687d309 100644 --- a/2-farm/lessons/3-automated-plant-watering/README.md +++ b/2-farm/lessons/3-automated-plant-watering/README.md @@ -226,7 +226,7 @@ Update your server code to run the relay for 5 seconds, then wait 20 seconds. client.publish(server_command_topic, json.dumps(command)) ``` - This code defines a function called `send_relay_command` that sends a command over MQTT to control the relay. The telemetry is created as a dictionary, then converted to a JSON string. The value passed in to `state` determines if the relay should be on or off. + This code defines a function called `send_relay_command` that sends a command over MQTT to control the relay. The telemetry is created as a dictionary, then converted to a JSON string. The value passed into `state` determines if the relay should be on or off. 1. After the `send_relay_code` function, add the following code: diff --git a/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md b/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md index 3467c1d..ae4ed0d 100644 --- a/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md +++ b/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md @@ -38,7 +38,7 @@ Program the device. 1. Open the `soil-moisture-sensor` project from the last lesson in VS Code if it's not already open. You will be adding to this project. -1. There isn't a library for this actuator - it's a digital actuator controlled by a high or low signal. To turn it on, you send a high signal to the pin (3.3V), turn turn it off you send a low signal (0V). You can do this using the built-in Arduino [`digitalWrite`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/) function. Start by adding the following to the bottom of the `setup` function to setup the combined I2C/digital port as an output pin to send a voltage to the relay: +2. There isn't a library for this actuator - it's a digital actuator controlled by a high or low signal. To turn it on, you send a high signal to the pin (3.3V), to turn it off you send a low signal (0V). You can do this using the built-in Arduino [`digitalWrite`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/) function. Start by adding the following to the bottom of the `setup` function to setup the combined I2C/digital port as an output pin to send a voltage to the relay: ```cpp pinMode(PIN_WIRE_SCL, OUTPUT); diff --git a/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md b/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md index a8b182b..4be631e 100644 --- a/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md +++ b/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md @@ -102,7 +102,7 @@ The public test MQTT broker you have been using is a great tool when learning, b * Performance - it is designed for only a few test messages, so wouldn't cope with a large amount of messages being sent * Discovery - there is no way to know what devices are connected -IoT services in the cloud solve these problems. They are maintained by large cloud providers who invest heavily in reliability and are on hand to fix any issues that might arise. They have security baked in to stop hackers reading your data or sending rogue commands. They are also high performance, being able to handle many millions of messages every day, taking advantage of the cloud to scale as needed. +IoT services in the cloud solve these problems. They are maintained by large cloud providers who invest heavily in reliability and are on hand to fix any issues that might arise. They have security baked-in to stop hackers reading your data or sending rogue commands. They are also high performance, being able to handle many millions of messages every day, taking advantage of the cloud to scale as needed. > 💁 Although you pay for these upsides with a monthly fee, most cloud providers offer a free version of their IoT service with a limited amount of messages per day or devices that can connect. This free version is usually more than enough for a developer to learn about the service. In this lesson you will be using a free version. diff --git a/2-farm/lessons/5-migrate-application-to-the-cloud/README.md b/2-farm/lessons/5-migrate-application-to-the-cloud/README.md index 23baee8..25e5782 100644 --- a/2-farm/lessons/5-migrate-application-to-the-cloud/README.md +++ b/2-farm/lessons/5-migrate-application-to-the-cloud/README.md @@ -375,7 +375,7 @@ This will create a folder inside the `soil-moisture-trigger` folder called `iot- For detailed output, run func with --verbose flag. [2021-05-05T02:44:07.517Z] Worker process started and initialized. [2021-05-05T02:44:09.202Z] Executing 'Functions.iot-hub-trigger' (Reason='(null)', Id=802803a5-eae9-4401-a1f4-176631456ce4) - [2021-05-05T02:44:09.205Z] Trigger Details: PartionId: 0, Offset: 1011240-1011632, EnqueueTimeUtc: 2021-05-04T19:04:04.2030000Z-2021-05-04T19:04:04.3900000Z, SequenceNumber: 2546-2547, Count: 2 + [2021-05-05T02:44:09.205Z] Trigger Details: PartitionId: 0, Offset: 1011240-1011632, EnqueueTimeUtc: 2021-05-04T19:04:04.2030000Z-2021-05-04T19:04:04.3900000Z, SequenceNumber: 2546-2547, Count: 2 [2021-05-05T02:44:09.352Z] Python EventHub trigger processed an event: {"soil_moisture":628} [2021-05-05T02:44:09.354Z] Python EventHub trigger processed an event: {"soil_moisture":624} [2021-05-05T02:44:09.395Z] Executed 'Functions.iot-hub-trigger' (Succeeded, Id=802803a5-eae9-4401-a1f4-176631456ce4, Duration=245ms) diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md b/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md index 836feb8..bda276c 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md @@ -99,7 +99,7 @@ Program the device. This code creates a PiCamera object, sets the resolution to 640x480. Although higher resolutions are supported (up to 3280x2464), the image classifier works on much smaller images (227x227) so there is no need to capture and send larger images. - The `camera.rotation = 0` line sets the rotation of the image. The ribbon cable comes in to the bottom of the camera, but if your camera was rotated to allow it to point easier at the item you want to classify, then you can change this line to the number of degrees of rotation. + The `camera.rotation = 0` line sets the rotation of the image. The ribbon cable comes into the bottom of the camera, but if your camera was rotated to allow it to point easier at the item you want to classify, then you can change this line to the number of degrees of rotation. ![The camera hanging down over a drink can](../../../images/pi-camera-upside-down.png) diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md b/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md index 109f1e4..8d66568 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md @@ -34,7 +34,7 @@ The Custom Vision service has a Python SDK you can use to classify images. Replace `` with the URL you copied from the *Prediction URL* dialog earlier in this lesson. Replace `` with the prediction key you copied from the same dialog. -1. The prediciton URL that was provided by the *Prediction URL* dialog is designed to be used when calling the REST endpoint directly. The Python SDK uses parts of the URL in different places. Add the following code to break apart this URL into the parts needed: +1. The prediction URL that was provided by the *Prediction URL* dialog is designed to be used when calling the REST endpoint directly. The Python SDK uses parts of the URL in different places. Add the following code to break apart this URL into the parts needed: ```python parts = prediction_url.split('/') diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md b/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md index a6802ce..98ee395 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md @@ -1,6 +1,6 @@ # Capture an image - Virtual IoT Hardware -In this part of the lesson, you will add a camera sensor to your yirtual IoT device, and read images from it. +In this part of the lesson, you will add a camera sensor to your virtual IoT device, and read images from it. ## Hardware diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md b/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md index 877603a..942781e 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md @@ -56,7 +56,7 @@ The Wio Terminal can now be programmed to use the attached ArduCAM camera. 1. The ArduCam library isn't available as an Arduino library that can be installed from the `platformio.ini` file. Instead it will need to be installed from source from their GitHub page. You can get this by either: * Cloning the repo from [https://github.com/ArduCAM/Arduino.git](https://github.com/ArduCAM/Arduino.git) - * Heading to the repo on GitHub at [github.com/ArduCAM/Arduino](https://github.com/ArduCAM/Arduino) and downloading the code as a zip from from the **Code** button + * Heading to the repo on GitHub at [github.com/ArduCAM/Arduino](https://github.com/ArduCAM/Arduino) and downloading the code as a zip from the **Code** button 1. You only need the `ArduCAM` folder from this code. Copy the entire folder into the `lib` folder in your project. diff --git a/5-retail/lessons/1-train-stock-detector/README.md b/5-retail/lessons/1-train-stock-detector/README.md index 7217f59..7deaa5f 100644 --- a/5-retail/lessons/1-train-stock-detector/README.md +++ b/5-retail/lessons/1-train-stock-detector/README.md @@ -62,7 +62,7 @@ When you then use it to predict images, instead of getting back a list of tags a ![Object detection of cashew nuts and tomato paste](../../../images/object-detector-cashews-tomato.png) -The image above contains both a tub of cashew nuts and three cans of tomato paste. The object detector detected the cashew nuts, returning the bounding box that contains the cashew nuts with the percentage chance that that bounding box contains the object, in this case 97.6%. The object detector has also detected three cans of tomato paste, and provides three separate bounding boxes, one for each detected can, and each one has a percentage probability that the bounding box contains a can of tomato paste. +The image above contains both a tub of cashew nuts and three cans of tomato paste. The object detector detected the cashew nuts, returning the bounding box that contains the cashew nuts with the percentage chance that the bounding box contains the object, in this case 97.6%. The object detector has also detected three cans of tomato paste, and provides three separate bounding boxes, one for each detected can, and each one has a percentage probability that the bounding box contains a can of tomato paste. ✅ Think of some different scenarios you might want to use image-based AI models for. Which ones would need classification, and which would need object detection? @@ -113,7 +113,7 @@ You can train an object detector using Custom Vision, in a similar way to how yo ![The settings for the custom vision project with the name set to fruit-quality-detector, no description, the resource set to fruit-quality-detector-training, the project type set to classification, the classification types set to multi class and the domains set to food](../../../images/custom-vision-create-object-detector-project.png) - ✅ The products on shelves domain is specifically targeted for detecting stock on store shelves. Read more on the different domains in the [Select a domian documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain?WT.mc_id=academic-17441-jabenn#object-detection) + ✅ The products on shelves domain is specifically targeted for detecting stock on store shelves. Read more on the different domains in the [Select a domain documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain?WT.mc_id=academic-17441-jabenn#object-detection) ✅ Take some time to explore the Custom Vision UI for your object detector. diff --git a/5-retail/lessons/2-check-stock-device/README.md b/5-retail/lessons/2-check-stock-device/README.md index 5c3851f..c56ca46 100644 --- a/5-retail/lessons/2-check-stock-device/README.md +++ b/5-retail/lessons/2-check-stock-device/README.md @@ -120,7 +120,7 @@ You can use bounding boxes combined with probabilities to evaluate how accurate ![Two bonding boxes overlapping a can of tomato paste](../../../images/overlap-object-detection.png) -In the example above, one bounding box indicated a predicted can of tomato paste at 78.3%. A second bounding box is slightly smaller, and is inside the first bounding box with a probability of 64.3%. Your code can check the bounding boxes, see they overlap completely, and ignore the lower probability as there is no way one can can be inside another. +In the example above, one bounding box indicated a predicted can of tomato paste at 78.3%. A second bounding box is slightly smaller, and is inside the first bounding box with a probability of 64.3%. Your code can check the bounding boxes, see they overlap completely, and ignore the lower probability as there is no way one can be inside another. ✅ Can you think of a situation where is it valid to detect one object inside another? diff --git a/6-consumer/lessons/1-speech-recognition/code-record/wio-terminal/smart-timer/src/mic.h b/6-consumer/lessons/1-speech-recognition/code-record/wio-terminal/smart-timer/src/mic.h index ecdeb41..3210ee0 100644 --- a/6-consumer/lessons/1-speech-recognition/code-record/wio-terminal/smart-timer/src/mic.h +++ b/6-consumer/lessons/1-speech-recognition/code-record/wio-terminal/smart-timer/src/mic.h @@ -156,7 +156,7 @@ typedef struct DMAC->Channel[1].CHCTRLA.bit.ENABLE = 1; // Configure Timer/Counter 5 - GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable perhipheral channel for TC5 + GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable peripheral channel for TC5 GCLK_PCHCTRL_GEN_GCLK1; // Connect generic clock 0 at 48MHz TC5->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ; // Set TC5 to Match Frequency (MFRQ) mode diff --git a/6-consumer/lessons/1-speech-recognition/code-speech-to-text/wio-terminal/smart-timer/src/mic.h b/6-consumer/lessons/1-speech-recognition/code-speech-to-text/wio-terminal/smart-timer/src/mic.h index 5f0815d..655ff38 100644 --- a/6-consumer/lessons/1-speech-recognition/code-speech-to-text/wio-terminal/smart-timer/src/mic.h +++ b/6-consumer/lessons/1-speech-recognition/code-speech-to-text/wio-terminal/smart-timer/src/mic.h @@ -150,7 +150,7 @@ typedef struct DMAC->Channel[1].CHCTRLA.bit.ENABLE = 1; // Configure Timer/Counter 5 - GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable perhipheral channel for TC5 + GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable peripheral channel for TC5 GCLK_PCHCTRL_GEN_GCLK1; // Connect generic clock 0 at 48MHz TC5->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ; // Set TC5 to Match Frequency (MFRQ) mode diff --git a/6-consumer/lessons/1-speech-recognition/wio-terminal-audio.md b/6-consumer/lessons/1-speech-recognition/wio-terminal-audio.md index 8b3a45b..b4f1f2c 100644 --- a/6-consumer/lessons/1-speech-recognition/wio-terminal-audio.md +++ b/6-consumer/lessons/1-speech-recognition/wio-terminal-audio.md @@ -297,7 +297,7 @@ Once each buffer has been captured, it can be written to the flash memory. Flash DMAC->Channel[1].CHCTRLA.bit.ENABLE = 1; // Configure Timer/Counter 5 - GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable perhipheral channel for TC5 + GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable peripheral channel for TC5 GCLK_PCHCTRL_GEN_GCLK1; // Connect generic clock 0 at 48MHz TC5->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ; // Set TC5 to Match Frequency (MFRQ) mode @@ -397,7 +397,7 @@ Once each buffer has been captured, it can be written to the flash memory. Flash The audio buffers are arrays of 16-bit integers containing the audio from the ADC. The ADC returns 12-bit unsigned values (0-1023), so these need to be converted to 16-bit signed values, and then converted into 2 bytes to be stored as raw binary data. - These bytes are written to the flash memory buffers. The write starts at index 44 - this is the offset from the 44 bytes written as the WAV file header. Once all the bytes needed for the required audio length have been captured, the remaing data is written to the flash memory. + These bytes are written to the flash memory buffers. The write starts at index 44 - this is the offset from the 44 bytes written as the WAV file header. Once all the bytes needed for the required audio length have been captured, the remaining data is written to the flash memory. 1. In the `public` section of the `Mic` class, add the following code: diff --git a/6-consumer/lessons/2-language-understanding/README.md b/6-consumer/lessons/2-language-understanding/README.md index 4930a35..25a917b 100644 --- a/6-consumer/lessons/2-language-understanding/README.md +++ b/6-consumer/lessons/2-language-understanding/README.md @@ -175,7 +175,7 @@ You can find instructions for using the LUIS portal in the [Quickstart: Build yo 1. Once the entities and intents are configured, you can train the model using the **Train** button on the top menu. Select this button, and the model should train in a few seconds. The button will be greyed out whilst training, and be re-enabled once done. -1. Select the **Test** button from the top menu to test the language understanding model. Enter text such as `set a timer for 5 minutes and 4 seconds` and press return. The sentence will appear in a box under the text box that you typed it in to, and blow that will be the *top intent*, or the intent that was detected with the highest probability. This should be `set timer`. The intent name will be followed by the probability that the intent detected was the right one. +1. Select the **Test** button from the top menu to test the language understanding model. Enter text such as `set a timer for 5 minutes and 4 seconds` and press return. The sentence will appear in a box under the text box that you typed it into, and blow that will be the *top intent*, or the intent that was detected with the highest probability. This should be `set timer`. The intent name will be followed by the probability that the intent detected was the right one. 1. Select the **Inspect** option to see a breakdown of the results. You will see the top-scoring intent with it's percentage probability, along with lists of the entities detected. diff --git a/6-consumer/lessons/3-spoken-feedback/README.md b/6-consumer/lessons/3-spoken-feedback/README.md index 40a39ae..0b7efa7 100644 --- a/6-consumer/lessons/3-spoken-feedback/README.md +++ b/6-consumer/lessons/3-spoken-feedback/README.md @@ -38,7 +38,7 @@ Text to speech systems typically have 3 stages: ### Text analysis -Text analysis involves taking the text provided, and converting into words that can be used to generate speech. For example, if you convert "Hello world", there there is no text analysis needed, the two words can be converted to speech. If you have "1234" however, then this might need to be converted either into the words "One thousand, two hundred thirty four" or "One, two, three, four" depending on the context. For "I have 1234 apples", then it would be "One thousand, two hundred thirty four", but for "The child counted 1234" then it would be "One, two, three, four". +Text analysis involves taking the text provided, and converting into words that can be used to generate speech. For example, if you convert "Hello world", there is no text analysis needed, the two words can be converted to speech. If you have "1234" however, then this might need to be converted either into the words "One thousand, two hundred thirty four" or "One, two, three, four" depending on the context. For "I have 1234 apples", then it would be "One thousand, two hundred thirty four", but for "The child counted 1234" then it would be "One, two, three, four". The words created vary not only for the language, but the locale of that language. For example, in American English, 120 would be "One hundred twenty", in British English it would be "One hundred and twenty", with the use of "and" after the hundreds. diff --git a/6-consumer/lessons/3-spoken-feedback/code-spoken-response/wio-terminal/smart-timer/src/mic.h b/6-consumer/lessons/3-spoken-feedback/code-spoken-response/wio-terminal/smart-timer/src/mic.h index 5f0815d..655ff38 100644 --- a/6-consumer/lessons/3-spoken-feedback/code-spoken-response/wio-terminal/smart-timer/src/mic.h +++ b/6-consumer/lessons/3-spoken-feedback/code-spoken-response/wio-terminal/smart-timer/src/mic.h @@ -150,7 +150,7 @@ typedef struct DMAC->Channel[1].CHCTRLA.bit.ENABLE = 1; // Configure Timer/Counter 5 - GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable perhipheral channel for TC5 + GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable peripheral channel for TC5 GCLK_PCHCTRL_GEN_GCLK1; // Connect generic clock 0 at 48MHz TC5->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ; // Set TC5 to Match Frequency (MFRQ) mode diff --git a/6-consumer/lessons/3-spoken-feedback/code-timer/wio-terminal/smart-timer/src/mic.h b/6-consumer/lessons/3-spoken-feedback/code-timer/wio-terminal/smart-timer/src/mic.h index 5f0815d..655ff38 100644 --- a/6-consumer/lessons/3-spoken-feedback/code-timer/wio-terminal/smart-timer/src/mic.h +++ b/6-consumer/lessons/3-spoken-feedback/code-timer/wio-terminal/smart-timer/src/mic.h @@ -150,7 +150,7 @@ typedef struct DMAC->Channel[1].CHCTRLA.bit.ENABLE = 1; // Configure Timer/Counter 5 - GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable perhipheral channel for TC5 + GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable peripheral channel for TC5 GCLK_PCHCTRL_GEN_GCLK1; // Connect generic clock 0 at 48MHz TC5->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ; // Set TC5 to Match Frequency (MFRQ) mode diff --git a/6-consumer/lessons/4-multiple-language-support/code/wio-terminal/smart-timer/src/mic.h b/6-consumer/lessons/4-multiple-language-support/code/wio-terminal/smart-timer/src/mic.h index 5f0815d..655ff38 100644 --- a/6-consumer/lessons/4-multiple-language-support/code/wio-terminal/smart-timer/src/mic.h +++ b/6-consumer/lessons/4-multiple-language-support/code/wio-terminal/smart-timer/src/mic.h @@ -150,7 +150,7 @@ typedef struct DMAC->Channel[1].CHCTRLA.bit.ENABLE = 1; // Configure Timer/Counter 5 - GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable perhipheral channel for TC5 + GCLK->PCHCTRL[TC5_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | // Enable peripheral channel for TC5 GCLK_PCHCTRL_GEN_GCLK1; // Connect generic clock 0 at 48MHz TC5->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ; // Set TC5 to Match Frequency (MFRQ) mode diff --git a/6-consumer/lessons/4-multiple-language-support/pi-translate-speech.md b/6-consumer/lessons/4-multiple-language-support/pi-translate-speech.md index 59c08ff..8fbbbc2 100644 --- a/6-consumer/lessons/4-multiple-language-support/pi-translate-speech.md +++ b/6-consumer/lessons/4-multiple-language-support/pi-translate-speech.md @@ -147,4 +147,4 @@ The speech service REST API doesn't support direct translations, instead you can > 💁 You can find this code in the [code/pi](code/pi) folder. -😀 Your multi-lingual timer program was a success! +😀 Your multilingual timer program was a success! diff --git a/6-consumer/lessons/4-multiple-language-support/virtual-device-translate-speech.md b/6-consumer/lessons/4-multiple-language-support/virtual-device-translate-speech.md index 493a5b4..c8b48b8 100644 --- a/6-consumer/lessons/4-multiple-language-support/virtual-device-translate-speech.md +++ b/6-consumer/lessons/4-multiple-language-support/virtual-device-translate-speech.md @@ -187,4 +187,4 @@ The speech service doesn't support translation of text back to speech, instead y > 💁 You can find this code in the [code/virtual-iot-device](code/virtual-iot-device) folder. -😀 Your multi-lingual timer program was a success! +😀 Your multilingual timer program was a success! diff --git a/6-consumer/lessons/4-multiple-language-support/wio-terminal-translate-speech.md b/6-consumer/lessons/4-multiple-language-support/wio-terminal-translate-speech.md index 2e3ce92..af32bcb 100644 --- a/6-consumer/lessons/4-multiple-language-support/wio-terminal-translate-speech.md +++ b/6-consumer/lessons/4-multiple-language-support/wio-terminal-translate-speech.md @@ -267,4 +267,4 @@ The speech service REST API doesn't support direct translations, instead you can > 💁 You can find this code in the [code/wio-terminal](code/wio-terminal) folder. -😀 Your multi-lingual timer program was a success! +😀 Your multilingual timer program was a success!