Вы можете использовать любой сторонний сервис встроив его в свое расширение: ведь у расширений полный доступ к сайтам. Например, внутри popup-окна расширения вы можете разместить невидимый iframe, где будет открыт сайт Яндекс.Переводчика, а дальше дело техники - по сигналу пользователя выполняйте запись голоса программным кликом на кнопку (голосовой ввод) и просто считывайте результат из текстового поля:
Добавлю, что некоторые сайты запрещают открывать себя внутри iframe, но это запрет можно обойти удалив запрещающий заголовок. Для этого в background.js разместите код:
chrome.webRequest.onHeadersReceived.addListener(
function(info) {
var headers = info.responseHeaders; // Получаем массив отсылаемых заголовков
// Обходим массив полученных заголовков:
for (var i=headers.length-1; i>=0; --i) {
var header = headers[i].name.toLowerCase(); // Считываем название того или иного заголовка
// При наличии совпадений, удаляем заголовок:
if (header == 'x-frame-options' || header == 'frame-options') {
headers.splice(i, 1);
}
}
return {responseHeaders: headers}; // Вовращаем почищенный массив заголовков назад
},
{ urls: [ '<all_urls>' ], types: [ 'sub_frame' ] },
['blocking', 'responseHeaders']
);
В манифесте, у вас обязательно должны быть указаны нужные разрешения:
"permissions" : [ "webRequest", "webRequestBlocking", "https://web.whatsapp.com/*" ],
"background" : { "persistent": true, "scripts": [ "background.js" ] },
...
"content_scripts" : [ { "matches" : [ "https://web.whatsapp.com/*" ], "all_frames": true, "js" : [ "load.js" ] } ]