近幾年各界對人工智能的興趣激增,自2011年以來,開發(fā)與人工智能相關的產(chǎn)品和技術并使之商業(yè)化的公司已獲得超過總計20億美元的風險投資,而科技巨頭更是投資數(shù)十億美元收購那些人工智能初創(chuàng)公司。相關報道鋪天蓋地,而巨額投資、計算機導致失業(yè)等問題也開始浮現(xiàn),計算機比人更加聰明并有可能威脅到人類生存這類論斷更是被媒體四處引用并引發(fā)廣泛關注。
IBM承諾撥出10億美元來使他們的認知計算平臺Watson商業(yè)化。
谷歌在最近幾年里的投資主要集中在人工智能領域,比如收購了8個機器人公司和1個機器學習公司。
Facebook聘用了人工智能學界泰斗Yann LeCun來創(chuàng)建自己的人工智能實驗室,期望在該領域獲得重大突破。
牛津大學的研究人員發(fā)表了一篇報告表明,美國大約47%的工作因為機器認知技術自動化而變得岌岌可危。
紐約時報暢銷書《The Second Machine Age》論斷,數(shù)字科技和人工智能帶來巨大積極改變的時代已經(jīng)到來,但是隨之而來的也有引發(fā)大量失業(yè)等負面效應。
硅谷創(chuàng)業(yè)家Elon Musk則通過不斷投資的方式來保持對人工智能的關注。他甚至認為人工智能的危險性超過核武器。
著名理論物理學家Stephen Hawking認為,如果成功創(chuàng)造出人工智能則意味著人類歷史的終結,“除非我們知道如何規(guī)避風險。”
即便有如此多炒作,但人工智能領域卻也不乏顯著的商業(yè)行為,這些活動已經(jīng)或者即將對各個行業(yè)和組織產(chǎn)生影響。商業(yè)領袖需要透徹理解人工智能的含義以及發(fā)展趨勢。
最近,我在Hacker News上看到了 一篇帖子 ,軟件工程師菲利浦·朗漢斯(Philipp Langhans)分享了一篇文章,介紹如何編寫一個基本的機器人程序。
這款人工智能機器人程序解決了語音信息并非始終很方便的問題,你可能在聊天時不想聽語音信息。原因可能是在某個公共場所,或者對方是你的好友。
菲利浦介紹了如何構建一個語音轉換成文本的機器人程序,它可以將語音信息轉換成文本。為此,如前所述,他借助了世界上智能化程度最高的機器人程序IBM Watson。
如何編寫IBM Watson人工智能機器人程序?
讓Watson為你的人工智能機器人程序作好準備:
首先,你需要注冊免費使用30天的Watson試用版,這讓你可以獲得2GB的運行時環(huán)境和容器內存以運行應用程序,還有無限制的IBM服務和API。
完成注冊并設置好區(qū)域和公司之后,可以在需要時隨時瀏覽Web用戶界面了。
完成這一步后,按照這個一目了然的 說明文檔 ,使用命令行,創(chuàng)建語音轉換成文本的服務。
現(xiàn)在回到Web界面,找到剛創(chuàng)建的那個服務,并獲得登錄信息。
用50行代碼構建Telegram機器人程序:
這一步很簡單,你只需要將BotFather添加到你的聯(lián)系人?,F(xiàn)在,使用/newbot命令,按說明操作即可,比如添加你的姓名和用戶名。
完成這一切后,下面是可以用來自行構建機器人程序的開源代碼。不妨看一下:
var Bot = require('node-telegram-bot-api')
var watson = require('watson-developer-cloud');
var request = require('request');
var config = require('./config');
var speech_to_text = watson.speech_to_text({
username: config.watson.username,
password: config.watson.password,
version: 'v1',
url: 'https://stream.watsonplatform.net/speech-to-text/api'
});
var params = {
content_type: 'audio/ogg;codecs=opus',
continuous: true,
interim_results: false
};
var bot = new Bot(config.telegram.token, { polling: true });
bot.on('message', function (msg) {
if(msg['voice']){ return onVoiceMessage(msg); }
});
function onVoiceMessage(msg){
var chatId = msg.chat.id;
bot.getFileLink(msg.voice.file_id).then(function(link){
//setup new recognizer stream
var recognizeStream = speech_to_text.createRecognizeStream(params);
recognizeStream.setEncoding('utf8');
recognizeStream.on('results', function(data){
if(data && data.results && data.results.length>0 && data.results[0].alternatives && data.results[0].alternatives.length>0){
var result = data.results[0].alternatives[0].transcript;
console.log("result: ", result);
//send speech recognizer result back to chat
bot.sendMessage(chatId, result, {
disable_notification: true,
reply_to_message_id: msg.message_id
}).then(function () {
// reply sent!
});
}
});
['data', 'error', 'connection-close'].forEach(function(eventName){
recognizeStream.on(eventName, console.log.bind(console, eventName + ' event: '));
});
//pipe voice message to recognizer -> send to watson
request(link).pipe(recognizeStream);
});
}