To call Azure Marketplace Translation (and Speech) service
Dependencies: EthernetInterface-FRDM HTTPClient-SSL R_BSP SDFileSystem TLV320_RBSP USBHost mbed-rtos mbed-src
The program calls Azure Marketplace Translation (and Speech) service.
How to use - Create an account for Microsoft Azure Marketplace - Get client ID and client secret. - Change client ID and client secret in main.cpp
The program was created based on the following libraries.
CodePlex Text-To-Speech with Microsoft Translator Service http://translatorservice.codeplex.com/
MBED HTTPClient-SSL Library https://developer.mbed.org/teams/MultiTech/code/HTTPClient-SSL/
wavecnv.cpp
- Committer:
- ksekimoto
- Date:
- 2015-11-07
- Revision:
- 0:40a09c55e5be
File content as of revision 0:40a09c55e5be:
//////////////////////////////////////////////////////////////////////////// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Copyright (c) Microsoft Corporation. All rights reserved. // Portions Copyright (c) Kentaro Sekimoto All rights reserved. // // Convert wave file from 8bit mono to 16 bit stereo // //////////////////////////////////////////////////////////////////////////// #include "mbed.h" #define HEADER_SIZE 0x2e #define BUF_SIZE 1024 #define TO_BUF_SIZE (FROM_BUF_SIZE * 2) #define MUL 20 unsigned char fromHeader[HEADER_SIZE]; unsigned char toHeader[HEADER_SIZE]; unsigned char fromBuf[BUF_SIZE]; short toBuf[BUF_SIZE*2]; // 0x25c8 + 0x2e = 0x25f6 void wavecnv(char *fromfn, char *tofn) { FILE *fromfp; FILE *tofp; int fromSize; int toSize; unsigned int size; int i; unsigned int fromChunkSize; unsigned int toChunkSize; unsigned int sampleRate; unsigned short uval; short sval; if ((fromfp = fopen(fromfn, "rb")) == NULL) return; if ((tofp = fopen(tofn, "wb")) == NULL) return; fromSize = fread(fromHeader, 1, HEADER_SIZE, fromfp); memcpy(toHeader, fromHeader, HEADER_SIZE); sampleRate = (unsigned int)fromHeader[0x18] + ((unsigned int)fromHeader[0x19] << 8) + ((unsigned int)fromHeader[0x1a] << 16) + ((unsigned int)fromHeader[0x1b] << 24) ; sampleRate *= 4; toHeader[0x1c] = (unsigned char)(sampleRate & 0xff); toHeader[0x1d] = (unsigned char)((sampleRate >> 8) & 0xff); toHeader[0x1e] = (unsigned char)((sampleRate >> 16) & 0xff); toHeader[0x1f] = (unsigned char)((sampleRate >> 24) & 0xff); toHeader[0x10] = 0x10; toHeader[0x16] = 0x02; toHeader[0x20] = 0x04; toHeader[0x22] = 0x10; fromChunkSize = (unsigned int)fromHeader[0x2a] + ((unsigned int)fromHeader[0x2b] << 8) + ((unsigned int)fromHeader[0x2c] << 16) + ((unsigned int)fromHeader[0x2d] << 24) ; toChunkSize = fromChunkSize * 4; toHeader[0x24] = 'd'; toHeader[0x25] = 'a'; toHeader[0x26] = 't'; toHeader[0x27] = 'a'; toHeader[0x28] = (unsigned char)(toChunkSize & 0xff); toHeader[0x29] = (unsigned char)((toChunkSize >> 8) & 0xff); toHeader[0x2a] = (unsigned char)((toChunkSize >> 16) & 0xff); toHeader[0x2b] = (unsigned char)((toChunkSize >> 24) & 0xff); size = toChunkSize + 0x2c - 8; toHeader[0x04] = (unsigned char)(size & 0xff); toHeader[0x05] = (unsigned char)((size >> 8) & 0xff); toHeader[0x06] = (unsigned char)((size >> 16) & 0xff); toHeader[0x07] = (unsigned char)((size >> 24) & 0xff); toSize = fwrite(toHeader, 1, HEADER_SIZE, tofp); while (fromChunkSize > 0) { if (fromChunkSize > BUF_SIZE) size = BUF_SIZE; else size = fromChunkSize; fromSize = fread(fromBuf, 1, size, fromfp); for (i = 0; i < size; i++) { if (fromBuf[i] == 0x80) { toBuf[i*2] = 0; toBuf[i*2+1] = 0; } else { uval = (unsigned short)fromBuf[i]; if (uval > 0x80) { uval = (uval - 0x80) * 256; sval = (short)uval; } else { uval = (0x80 - uval) * 256; sval = ((short)uval) * (-1); } toBuf[i*2] = sval; toBuf[i*2+1] = sval; } } toSize = fwrite(toBuf, 4, size, tofp); fromChunkSize -= size; } fclose(tofp); fclose(fromfp); }