調(diào)用騰訊云的語音識別(一句話識別)接口-Python版。
成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、小程序定制開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10余年以來,已經(jīng)為成百上千成都墻體彩繪各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的成百上千客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
安裝語音識別,語音識別器編碼,處理Ubuntu服務(wù)器,處理WSL。
要運行我們代碼的語音識別庫,我們首先需要安裝語音識別,然后還必須安裝PyAudio。首先,我們從主包開始:sudo pip3 install SpeechRecognition安裝應(yīng)該遵循完全相同的格式,但我似乎缺少了讓它正常工作的軟件包,試圖安裝PyAudio會出錯。這些軟件包應(yīng)該刪除該錯誤。那時我不需要更新apt,但先更新它并不壞處。sudo apt-get install libasound-dev portaudio19-dev libportaudio2libportaudiocpp0有了它,您應(yīng)該可以安裝PyAudio:sudo pip3 install PyAudio語音識別器編碼。
運行WSL(Linux版Windows子系統(tǒng))的Windows機器。它也使用了Ubuntu 16.04,所以安裝過程是一樣的。不過說到使用麥克風,WSL并不那么簡單。為了通過Ubuntu終端應(yīng)用程序控制麥克風,需要安裝PulseAudio。
什么是接口 ?
接口只是定義了一些方法,而沒有去實現(xiàn),多用于程序設(shè)計時,只是設(shè)計需要有什么樣的功能,但是并沒有實現(xiàn)任何功能,這些功能需要被另一個類(B)繼承后,由 類B去實現(xiàn)其中的某個功能或全部功能。
個人的理解,多用于協(xié)作開發(fā)時,有不同的人在不同的類中實現(xiàn)接口中的各個方法。
在python中接口由抽象類和抽象方法去實現(xiàn),接口是不能被實例化的,只能被別的類繼承去實現(xiàn)相應(yīng)的功能。
個人覺得接口在python中并沒有那么重要,因為如果要繼承接口,需要把其中的每個方法全部實現(xiàn),否則會報編譯錯誤,還不如直接定義一個class,其中的方法實現(xiàn)全部為pass,讓子類重寫這些函數(shù)。
當然如果有強制要求,必須所有的實現(xiàn)類都必須按照接口中的定義寫的話,就必須要用接口。
方法一:用抽象類和抽象函數(shù)實現(xiàn)方法
[python]?view plain?copy
#抽象類加抽象方法就等于面向?qū)ο缶幊讨械慕涌?/p>
from?abc?import?ABCMeta,abstractmethod
class?interface(object):
__metaclass__?=?ABCMeta?#指定這是一個抽象類
@abstractmethod??#抽象方法
def?Lee(self):
pass
def?Marlon(self):
pass
class?RelalizeInterfaceLee(interface):#必須實現(xiàn)interface中的所有函數(shù),否則會編譯錯誤
def?__init__(self):
print?'這是接口interface的實現(xiàn)'
def?Lee(self):
print?'實現(xiàn)Lee功能'
def?Marlon(self):
pass
class?RelalizeInterfaceMarlon(interface):?#必須實現(xiàn)interface中的所有函數(shù),否則會編譯錯誤
def?__init__(self):
print?'這是接口interface的實現(xiàn)'
def?Lee(self):
pass
def?Marlon(self):
print?"實現(xiàn)Marlon功能"
方法二:用普通類定義接口,
[python]?view plain?copy
class?interface(object):?#假設(shè)這就是一個接口,接口名可以隨意定義,所有的子類不需要實現(xiàn)在這個類中的函數(shù)
def?Lee(self):,
pass
def?Marlon(self):
pass
class?Realaize_interface(interface):
def?__init__(self):
pass
def?Lee(self):
print?"實現(xiàn)接口中的Lee函數(shù)"
class?Realaize_interface2(interface):
def?__init__(self):
pass
def?Marlon(self):
print?"實現(xiàn)接口中的Marlon函數(shù)"
obj=Realaize_interface()
obj.Lee()
obj=Realaize_interface2()
obj.Marlon()
ctypes:? 可直接調(diào)用c語言動態(tài)鏈接庫。
使用步驟:
1 編譯好自己的動態(tài)連接庫
2 利用ctypes載入動態(tài)連接庫
3 用ctype調(diào)用C函數(shù)接口時,需要將python變量類型做轉(zhuǎn)換后才能作為函數(shù)參數(shù),轉(zhuǎn)換原則見下圖:
4 Python若想獲取ctypes調(diào)用的C函數(shù)返回值,需要先指定返回值類型。我們將在接下來的完整Sample中看到如何使用。
#Step?1:??test.c#include?stdio.h
int?add(int?a,?int?b)
{
return?a?+?b;
}#Step?2:?編譯動態(tài)鏈接庫?(?如何編譯動態(tài)鏈接庫在本文不詳解,網(wǎng)上資料一大堆。)gcc?-fPIC?-shared?test.c?-o?libtest.so??
#Step?3:??test.py
from?ctypes?import?*mylib?=?CDLL("libtest.so")???或者???cdll.LoadLibrary("libtest.so")???add?=?mylib.add
add.argtypes?=?[c_int,?c_int]?#?參數(shù)類型,兩個int(c_int是ctypes類型,見上表)
add.restype?=?c_int?#?返回值類型,int?(c_int?是ctypes類型,見上表)
sum?=?add(3,?6)
在操作文件的時候,我們肯定是要使用到 os 模塊的,但是 os 模塊里面還有 path 模塊,這個模塊主要是用來獲取文件的屬性的。這篇博客來分享一下 path 模塊的函數(shù),希望對學習 Python 的小伙伴有所幫助。
返回絕對路徑:
返回文件名:
返回list(多個路徑)中,所有path共有的最長的路徑:
返回文件路徑:
路徑存在則返回True,路徑損壞返回False:
路徑存在則返回True,路徑損壞也返回True:
把path中包含的" "和" user"轉(zhuǎn)換成用戶目錄:
根據(jù)環(huán)境變量的值替換path中包含的" {name}":
返回最近訪問時間(浮點型秒數(shù)):
返回最近文件修改時間:
返回文件 path 創(chuàng)建時間:
返回文件大小,如果文件不存在就返回錯誤:
判斷是否為絕對路徑:
判斷路徑是否為文件:
判斷路徑是否為目錄:
判斷路徑是否為鏈接:
判斷路徑是否為掛載點:
把目錄和文件名合成一個路徑:
轉(zhuǎn)換path的大小寫和斜杠:
規(guī)范path字符串形式:
返回path的真實路徑:
從start開始計算相對路徑:
判斷目錄或文件是否相同:
判斷fp1和fp2是否指向同一文件:
判斷stat tuple stat1和stat2是否指向同一個文件:
把路徑分割成 dirname 和 basename,返回一個元組:
一般用在 windows 下,返回驅(qū)動器名和路徑組成的元組:
分割路徑中的文件名與拓展名:
把路徑分割為加載點與文件:
遍歷path,進入每個目錄都調(diào)用visit函數(shù),visit函數(shù)必須有3個參數(shù)(arg, dirname, names),dirname表示當前目錄的目錄名,names代表當前目錄下的所有文件名,args則為walk的第三個參數(shù):
設(shè)置是否支持unicode路徑名:
import時,如果已經(jīng)import,則不會重復執(zhí)行import操作
模塊內(nèi)部的東東屬于全局,所以不能變成兩個實例。
解決方法是寫一個類,然后生成兩個對象。