Статьи

Мобильные приложения с услугами перевода и языка с использованием IBM Watson и IBM MobileFirst

Недавно я выступил с докладом на IBM Insight о когнитивных вычислениях в мобильных приложениях. Я показал два приложения: одно, которое использует обработку естественного языка Watson для выполнения поисковых запросов , и другое, которое использует перевод и речь Watson к текстовым сервисам, чтобы перевести текст на одном языке, перевести его на другой язык, а затем даже заставить приложение воспроизводить разговорный язык. аудио на переведенном языке.  Это второе приложение, которое я хочу выделить сегодня.

На самом деле, это становится намного круче, чем это. У меня была идея: «Что если мы подключим механизм OCR (оптическое распознавание символов) к службам перевода?» Таким образом, вы можете сфотографировать что-то, извлечь текст и перевести его. Оказывается, это не так сложно, и я смог собрать это приложение всего за два дня. Посмотрите видео ниже, чтобы увидеть его в действии.

Чтобы было ясно, я использовал версию движка Tesseract OCR с открытым исходным кодом для iOS . Это не основано на какой-либо работе IBM, связанной с OCR или естественным распознаванием сцен , и не следует путать с какой-либо работой IBM OCR. Это базовое распознавание текста, которое лучше всего работает с темным текстом на светлом фоне.

Механизм Tesseract позволяет передавать изображение, а затем обрабатывает операции OCR, возвращая вам набор слов, которые он может извлечь из этого изображения. Получив текст, вы можете делать с ним все, что захотите.

Итак, вот где вступают в игру облачные службы Watson Developer . Во-первых, я использовал переводческий сервис Watson Language Translation Service . При использовании этого сервиса я делаю запрос к моему приложению Node.js, работающему на IBM Bluemix (облачная платформа IBM). Приложение Node.js действует как фасад и делегирует службе Watson для фактического перевода.

переводчик

Вы можете проверить образец в Интернете здесь:

Перевести с английского на испанский

На мобильном клиенте вы просто отправляете запрос на обслуживание и что-то делаете с ответом. В приведенном ниже примере используется API-интерфейс IMFResourceRequest для выполнения запроса к серверу (это можно сделать либо в Objective C, либо в Swift). IMFResourceRequest — это оболочка MobileFirst для сетевых запросов, которая позволяет службе MobileFirst / Mobile Client Access собирать операционную аналитику для каждого запроса, сделанного приложением.

NSDictionary *params = @{   
  @"text":text,
  @"source":@"en",
  @"target":language
};

IMFResourceRequest * imfRequest = 
  [IMFResourceRequest requestWithPath:@"https://translator.mybluemix.net/translate" 
                      method:@"GET" parameters:params];

[imfRequest sendWithCompletionHandler:^(IMFResponse *response, NSError *error) {  
  NSDictionary* json = response.responseJson;
  NSArray *translations = [json objectForKey:@"translations"];
  NSDictionary *translationObj = [translations objectAtIndex:0];
  self.lastTranslation = [translationObj objectForKey:@"translation"];
  // now do something with the result - like update the UI
}];

На сервере Node.js он просто принимает запрос и передает его в службу перевода Watson (используя Watson Node.js SDK):

app.get('/translate', function(req, res){
  language_translation.translate(req.query, function(err, translation) {
    if (err) {
      console.log(err)
      res.send( err );
    } else {
      console.log(translation);
      res.send( translation );
    }
  });
});

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

Чтобы сгенерировать звук с помощью службы Watson Text To Speech , вы можете использовать Watson Speech SDK или использовать фасад Node.js снова для обработки запросов к Watson Speech To Text Service. В этом примере я использовал фасад Node.js для генерации звука Flac, который я проигрывал в собственном приложении iOS с использованием библиотеки Origami Engine с открытым исходным кодом, которая поддерживает аудиоформаты Flac.

Вы можете просмотреть аудио, сгенерированное с помощью сервиса Watson Text To Speech, используя встроенное аудио ниже. Примечание: в этом примере я использую формат файла OGG; он будет работать только в браузерах, которые поддерживают OGG.

Английский: Привет и добро пожаловать! Пожалуйста, поделитесь этой статьей с друзьями!

Испанский:
Привет и биенвенидо! Comparta este artículo con su amigos!

На сервере Node.js запрос делегируется службе Watson Text To Speech, и синтезированный звук передается обратно запрашивающей стороне:

app.get('/synthesize', function(req, res) {
  var transcript = textToSpeech.synthesize(req.query);
  transcript.on('response', function(response) {
    if (req.query.download) {
      response.headers['content-disposition'] = 'attachment; filename=transcript.flac';
    }
  });
  transcript.on('error', function(error) {
    console.log('Synthesize error: ', error)
  });
  transcript.pipe(res);
});

На нативном клиенте iOS я загружаю аудиофайл и воспроизводю его с помощью проигрывателя Origami Engine. Это также можно сделать с помощью Watson iOS SDK (намного проще), но я написал этот пример до того, как SDK был доступен.

//format the URL
NSString *urlString = [NSString stringWithFormat:@"https://translator.mybluemix.net/synthesize?text=Hola!&voice=es-US_SofiaVoice&accept=audio/flac&download=1", phrase, voice ];
NSString* webStringURL = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *flacURL = [NSURL URLWithString:webStringURL];

//download the contents of the audio file
NSData *audioData = [NSData dataWithContentsOfURL:flacURL];
NSString *docDirPath = NSTemporaryDirectory() ;
NSString *filePath = [NSString stringWithFormat:@"%@transcript.flac", docDirPath ];
[audioData writeToFile:filePath atomically:YES];

//pass the file url the the origami player and play the audio
NSURL* fileUrl = [NSURL fileURLWithPath:filePath];
[self.orgmPlayer playUrl:fileUrl];

Когнитивные вычисления — это все, что расширяет возможности пользователя и позволяет пользователям выполнять свои обязанности более эффективно и результативно. Языковые службы Watson позволяют любому приложению значительно облегчить общение и расширить доступ к контенту для разных пользовательских баз. Вы должны обязательно проверить их, чтобы увидеть, как услуги Watson могут принести вам пользу.

MobileFirst

Итак, я упомянул, что это приложение использует предложения IBM MobileFirst для Bluemix . В частности, я использую сервис Mobile Client Access для сбора журналов и оперативной аналитики из приложения. Это позволяет вам регистрировать журналы и показатели использования для приложений, которые «живут в дикой природе», предоставляя информацию о том, что люди используют, как они их используют, и о состоянии системы в любой момент времени.

Аналитика от мобильного клиентского доступа

Обязательно ознакомьтесь с предложениями MobileFirst для Bluemix и MobileFirst Platform для более подробной информации.

Источник

Вы можете получить доступ к образцу клиента iOS и кода Node.js по адресу https://github.com/triceam/Watson-Translator . Инструкции по настройке доступны в документе readme . Я намереваюсь обновить это приложение с некоторыми другими вариантами использования перевода в будущем, поэтому обязательно перепроверьте!