|
|
今天我们将使用Python构建演示TARS。TARS可以帮助您自动执行任务,例如在YouTube中搜索视频并播放,发送电子邮件,打开网站,在Wikipedia中搜索材料并阅读它们,通知您所在国家的天气预报,问候等等。通过构建TARS,将增加您的Python知识,并学习许多有用的工具。想知道如何使用Python构建TARS,首先让我们首先创建虚拟环境并构建TARS的基本音频系统。, d; j) s3 ^8 a" c- H: c0 @
- <p> mkdirTARS</p>
, _8 X9 q7 j$ o' g; l - <p> cdTARS</p>
9 F0 l n/ {! Z( V8 A$ @ - <p> virtualenvvenv</p>
复制代码
3 _$ X, ?1 j' i X( y# N 要激活下面的venvrun命令
% l+ G' ~' `& u9 A) S& w! R
4 o: J; O: ~! B; h }; }# e& c 什么是虚拟环境?
8 U! l8 B" b- o, \ 激活venv后,我们需要通过以下命令安装主库:. Z- K+ y8 J% l: W+ C1 }% v
pip3installgTTSSpeechRecognitionPyAudiopygame7 L; e. z. `( h# {! K/ f4 _
gTTS是一个Python库和CLI工具,可与GoogleTranslate的文本到语音API交互。此模块有助于将字符串文本转换为语音文本,并可以另存为.mp3- F1 g, h4 t$ l* \ u, S! C* ?
语音识别是家庭自动化,人工智能等多种应用中的重要功能。语音识别需要音频输入,而语音识别使检索此输入变得非常简单。无需从头开始构建脚本来访问麦克风并处理音频文件,SpeechRecognition只需几分钟即可让您启动并运行。: H7 g6 w p* k D8 _
要使用SpeechRecognizer访问麦克风,您必须安装PyAudio软件包( C& m4 e+ Q! L/ B
Pygame是一组跨平台的Python模块,旨在编写视频游戏。它包括旨在与Python编程语言一起使用的计算机图形和声音库。1 J* p: s/ ]; {
现在,让我们构建TARS的语音系统:
. Y. v9 A4 o9 V$ ]- <p> fromgttsimportgTTS</p>: S( R3 W: q2 X$ A
- <p> importspeech_recognitionassr</p>7 V0 P) Q# f% `! k
- <p> frompygameimportmixer</p>1 D& F1 w* A$ R) ?
- <p> deftalk(audio):</p>
7 S3 `5 O U- d% A - <p> print(audio)</p>
1 |+ U" b7 b8 J4 Q: J/ x" j6 T9 | - <p> forlineinaudio.splitlines():</p>9 k# l$ d/ P9 p2 t# x6 ^3 P E; z
- <p> text_to_speech=gTTS(text=audio,lang='en-uk')</p>
0 c4 B4 |. h' M8 P. V$ [8 B - <p> text_to_speech.save('audio.mp3')</p>8 Y% s8 ^" ~5 @+ O( x
- <p> mixer.init()</p># p7 F5 `2 @2 _! u! M, Y; K2 h
- <p> mixer.music.load("audio.mp3")</p>
3 F! v4 \' s$ |1 \0 k+ G - <p> mixer.music.play()</p>
复制代码
( r7 h `! I+ ?4 z8 O8 O 我们通过音频作为使TARS说话的一种论据。例如talk程序将在splitlines()方法的帮助下循环这些行。此方法用于在线边界处分割线。检查splitlines()了解更多。然后,gTTS将处理所有这些文本转换为语音。text参数定义要读取的文本,lang定义用于读取文本的语言(IETF语言标签)。循环完成后,save()方法将结果写入文件。
+ @: N/ Z# m) B1 x pygame.mixer是用于加载和播放声音的模块,必须在使用之前进行初始化。: \3 o2 S- [& t6 p6 B
现在,让我们创建一个监听命令的函数:
2 ~$ u4 m, b" K) Y/ L- <p> defmyCommand():</p>
5 I5 x" Q" o7 }$ C- C* | - <p> #Initializetherecognizer</p>
8 x* t/ j" `. ?1 T! _ s - <p> r=sr.Recognizer()</p>8 I$ P! D' |+ X% {* |5 n |
- <p> withsr.Microphone()assource:</p>
( y" j0 H7 X0 g, P - <p> print('TARSisReady...')</p>! E, o: U' n1 W- ]( t
- <p> r.pause_threshold=1</p>
6 ?) ^5 i& ]6 s% l - <p> #waitforasecondtolettherecognizeradjustthe</p>+ `7 R" J* M9 F+ P
- <p> #energythresholdbasedonthesurroundingnoiselevel</p>
/ d$ |0 s+ p' \% @; n3 L ] - <p> r.adjust_for_ambient_noise(source,duration=1)</p> K! ^' Z' c, e% x' t' g% G
- <p> #listensfortheuser'sinput</p>
' z) j# j! @ ^: y! {1 v$ t. g: r - <p> audio=r.listen(source)</p>
! r0 m {* w7 f& V: c, [% w7 l - <p> try:</p>; N* |% W ^# M% Q- ^! H
- <p> command=r.recognize_google(audio).lower()</p>
; E1 a9 o" y3 S7 [ - <p> print('Yousaid:'+command+'\n')</p>
; k) k9 i( x) V9 U - <p> #loopbacktocontinuetolistenforcommandsifunrecognizablespeechisreceived</p>
1 C: n% \8 B3 Z8 [) N - <p> exceptsr.UnknownValueError:</p>' ^" F4 h$ [' Y( }
- <p> print('Yourlastcommandcouldn\'tbeheard')</p>( @& ` f( k" g# D% [* Y
- <p> command=myCommand();</p>
9 }- |5 v# f% T* U4 W% \8 I: p6 S - <p> returncommand</p>
复制代码
( m3 Z8 t( z# k 在此功能中,我们使用了SpeechRecognition库。它充当几种流行语音API的包装,因此非常灵活。其中之一-GoogleWebSpeechAPI-支持默认API密钥,该密钥硬编码到SpeechRecognition库中。这意味着您可以不用注册服务就能站起来。
7 s; X1 }+ ~5 {! f 为了能够通过语音识别使用自己的声音,您需要PyAudio软件包。像用于音频文件的Recognizer一样,我们将需要使用Microphone来获取实时语音数据。
2 _' _: k$ X% \8 q 您可以使用with块内Recognizer类的listen()方法捕获来自麦克风的输入。此方法将音频源作为其第一个参数,并记录来自该源的输入,直到检测到静音为止。
, x. S+ w! ^% ]) S 尝试在安静的地方说出您的命令,否则TARS可能会造成混淆。5 |" a: \9 x& |! w! }0 K- k4 F' r" @
综上所述,对于如何使用Python构建TARS:Scratch的虚拟助手的信息,相信大家已经清楚了吧。6 Q! {* r2 y b! z, z7 a
: D+ b. V; U+ s, l8 m* ~; d) q |
|