近幾年各界對(duì)人工智能的興趣激增,自2011年以來(lái),開(kāi)發(fā)與人工智能相關(guān)的產(chǎn)品和技術(shù)并使之商業(yè)化的公司已獲得超過(guò)總計(jì)20億美元的風(fēng)險(xiǎn)投資,而科技巨頭更是投資數(shù)十億美元收購(gòu)那些人工智能初創(chuàng)公司。相關(guān)報(bào)道鋪天蓋地,而巨額投資、計(jì)算機(jī)導(dǎo)致失業(yè)等問(wèn)題也開(kāi)始浮現(xiàn),計(jì)算機(jī)比人更加聰明并有可能威脅到人類生存這類論斷更是被媒體四處引用并引發(fā)廣泛關(guān)注。
IBM承諾撥出10億美元來(lái)使他們的認(rèn)知計(jì)算平臺(tái)Watson商業(yè)化。
谷歌在最近幾年里的投資主要集中在人工智能領(lǐng)域,比如收購(gòu)了8個(gè)機(jī)器人公司和1個(gè)機(jī)器學(xué)習(xí)公司。
Facebook聘用了人工智能學(xué)界泰斗Yann LeCun來(lái)創(chuàng)建自己的人工智能實(shí)驗(yàn)室,期望在該領(lǐng)域獲得重大突破。
牛津大學(xué)的研究人員發(fā)表了一篇報(bào)告表明,美國(guó)大約47%的工作因?yàn)闄C(jī)器認(rèn)知技術(shù)自動(dòng)化而變得岌岌可危。
紐約時(shí)報(bào)暢銷書(shū)《The Second Machine Age》論斷,數(shù)字科技和人工智能帶來(lái)巨大積極改變的時(shí)代已經(jīng)到來(lái),但是隨之而來(lái)的也有引發(fā)大量失業(yè)等負(fù)面效應(yīng)。
硅谷創(chuàng)業(yè)家Elon Musk則通過(guò)不斷投資的方式來(lái)保持對(duì)人工智能的關(guān)注。他甚至認(rèn)為人工智能的危險(xiǎn)性超過(guò)核武器。
著名理論物理學(xué)家Stephen Hawking認(rèn)為,如果成功創(chuàng)造出人工智能則意味著人類歷史的終結(jié),“除非我們知道如何規(guī)避風(fēng)險(xiǎn)。”
即便有如此多炒作,但人工智能領(lǐng)域卻也不乏顯著的商業(yè)行為,這些活動(dòng)已經(jīng)或者即將對(duì)各個(gè)行業(yè)和組織產(chǎn)生影響。商業(yè)領(lǐng)袖需要透徹理解人工智能的含義以及發(fā)展趨勢(shì)。
最近,我在Hacker News上看到了 一篇帖子 ,軟件工程師菲利浦·朗漢斯(Philipp Langhans)分享了一篇文章,介紹如何編寫一個(gè)基本的機(jī)器人程序。
這款人工智能機(jī)器人程序解決了語(yǔ)音信息并非始終很方便的問(wèn)題,你可能在聊天時(shí)不想聽(tīng)語(yǔ)音信息。原因可能是在某個(gè)公共場(chǎng)所,或者對(duì)方是你的好友。
菲利浦介紹了如何構(gòu)建一個(gè)語(yǔ)音轉(zhuǎn)換成文本的機(jī)器人程序,它可以將語(yǔ)音信息轉(zhuǎn)換成文本。為此,如前所述,他借助了世界上智能化程度最高的機(jī)器人程序IBM Watson。
如何編寫IBM Watson人工智能機(jī)器人程序?
讓W(xué)atson為你的人工智能機(jī)器人程序作好準(zhǔn)備:
首先,你需要注冊(cè)免費(fèi)使用30天的Watson試用版,這讓你可以獲得2GB的運(yùn)行時(shí)環(huán)境和容器內(nèi)存以運(yùn)行應(yīng)用程序,還有無(wú)限制的IBM服務(wù)和API。
完成注冊(cè)并設(shè)置好區(qū)域和公司之后,可以在需要時(shí)隨時(shí)瀏覽Web用戶界面了。
完成這一步后,按照這個(gè)一目了然的 說(shuō)明文檔 ,使用命令行,創(chuàng)建語(yǔ)音轉(zhuǎn)換成文本的服務(wù)。
現(xiàn)在回到Web界面,找到剛創(chuàng)建的那個(gè)服務(wù),并獲得登錄信息。
用50行代碼構(gòu)建Telegram機(jī)器人程序:
這一步很簡(jiǎn)單,你只需要將BotFather添加到你的聯(lián)系人?,F(xiàn)在,使用/newbot命令,按說(shuō)明操作即可,比如添加你的姓名和用戶名。
完成這一切后,下面是可以用來(lái)自行構(gòu)建機(jī)器人程序的開(kāi)源代碼。不妨看一下:
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);
});
}