赞
踩
最近自己写了点python程序,希望在手机端跑,这样能随时使用,然后发现了Termux这么好用的东西。
这个安装使用Python非常简单,期间为了折腾用Python播放音频,还试过在Termux中装kali,Python的pygame执行依旧提示找不到声卡。
然后删了kali还是直接用Termux+Python。
虽然最后间接实现了Python中声音播放,这里首先先说一下如何安装Termux。
安装Termux应用APP,很小巧,初次打开可能会提示installing,大概1~2分钟。
执行termux-setup-storage
给予存储权限。
先更新一下,pkg update && pkg upgrade
,apt-get update && apt-get upgrade
(检查更新与升级)
安装python3
pkg install python
,pkg的指令很好懂,和pip类似,安装python的同时会自动装上pippip install --upgrade pip
,更新pip安装一些python包,比如以下两个我常用的。
pip install requests
pip install pyquery
(如果提示lxml安装失败,需要安装依赖pkg install libxml2 libxslt libffi
)如果需要电脑SSH连Termux,参照下面执行一下就行了
apt install openssh
sshd
,sshd的server就在Termux的后台启动起来了。~/.ssh/id_rsa.pub
复制到手机/sdcard/
目录下
C:\Users\username\.ssh\id_rsa.pub
已存在,直接复制;如果不存在,运行ssh-keygen -t rsa
生成。/sdcard/
目录下的id_rsa.pub
写入termux上~/.ssh/authorized_keys
文件中
cd ~/.ssh
cp /sdcard/id_rsa.pub ./
cat id_rsa.pub >> authorized_keys
ssh u0_a53@192.168.100.4 -p 8022
链接即可
whoami
,手机查看当前用户名,比如u0_a53
ifconfig -a
,手机查看当前ip,比如192.168.100.4
在手机上想要执行的Python代码,其实原本是在win上写的,涉及到声音播放。
要播放的声音其实是对英文的朗读。
试了一些语音合成最后发现还是微软的urlapi = 'http://api.microsofttranslator.com/V2/Http.svc/Speak?language=en-us&format=audio/wav&options=MaxQuality'
返回的音频文件,英文朗读声音听起来最自然(还有一个原因是这个是免费的,其他tts语音合成有些比较好的效果音是收费的)。
在win上跑的时候,为了声音不影响其他代码执行,选择用pygame模块播放声音的。结果放到手机上执行,发现即使通过pip成功装上了pygame模块,pygame.mixer.init()
还是会报错找不到声卡。找了一些地方没有找到直接解决方法,只能间接解决。
在Termux中安装play-audio,pkg install play-audio
这样在Termux中执行执行play-audio test.wav
,就能播放声音了。
而且可以play-audio test1.wav test2.wav
直接连续播放多个。
在Python中,则是subprocess.call('play-audio '+audiopath, shell=True)
的方式实现声音播放
在我的代码中,因为需要后台播放的同时要做一些input输入操作,还要做到停止可控,所以用了多进程的方法
import subprocess
import signal
p = subprocess.Popen('play-audio '+wp,close_fds=True, stdout=subprocess.PIPE,preexec_fn=os.setsid, shell=True) # 播放不影响其他代码操作
os.killpg(p.pid,signal.SIGUSR1) # 关闭
因为声音是对文字的朗读,termux-api有tts所以也想试试。
pkg install termux-api
,然后执行卡死,才知道还需要安装个应用termux-tts-speak 要朗读的英文文章
,就能朗读了然后发现效果并不好
termux-tts-engines
看了一下手机默认的tts引擎,发现是讯飞的。
这个tts虽然能离线使用,但是效果肯定是远不及在线合成的。
不过我这手机也有点老了,
不知道tts这玩意怎么更新或替换,就没再研究。
之前测试朗读效果的时候,讯飞语音合成有的收费音源也是不错的,只不过我要朗读的是英文,量也不大,最后就用了微软的(看bing词典相关的时候,觉得声音效果不错,抓取了一下,发现调用了api.microsofttranslator.com这个接口实现的)
termux-api还有一个termux-media-player,也是能播放的
测试了一下termux-media-player play test.wav
,就能播放了
termux-media-player stop
就能停止播放,因为之前已经选择别的方法了,就没有用这个。
总而言之,
在Termux想通过Python播放音频,
没有找到能直接能播放的方法,
实际上都是通过subprocess间接实现播放,不过效果还可以的。
以下是装pygame的记录, 因为被问到所以发出来, 实际上我也只是装上就删了,可以用于参考吧
2020-03-03Termux上装kali
https://www.kali.org/docs/nethunter/nethunter-rootless/
pkg update && pkg upgrade
,apt-get update && apt-get upgrade
(检查更新与升级),先更新一下termux-setup-storage
pkg install wget
wget -O install-nethunter-termux https://offs.ec/2MceZWr
chmod +x install-nethunter-termux
./install-nethunter-termux
# 经常失败多试几次,执行成功后显示下载进度条(1.2G左右,速度500KB,约40分钟下完)nethunter
,进入kalivim /etc/apt/sources.list
,i
,粘贴,按Esc,:wq
保存。#中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib #阿里云 deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib #清华大学 deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free #浙大 deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free #东软大学 deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib #官方源 deb http://http.kali.org/kali kali-rolling main non-free contrib deb-src http://http.kali.org/kali kali-rolling main non-free contrib
apt-get update && apt-get upgrade
(检查更新与升级)sudo apt-get install python3-pip
安装pip3。pip install -i https://pypi.douban.com/simple pandas
sudo apt-get remove python3-pip
python3 -m pip install -U pip
安装pygame装不上
Hunting dependencies…
WARNING: “sdl-config” failed!
WARNING: “pkg-config freetype2” failed!
WARNING: “freetype-config” failed!
Unable to run “sdl-config”. Please make sure a development version of SDL is installed.
开始野蛮安装
#install dependencies
sudo apt-get install freetype freetype-dev mercurial python3-dev python3-numpy ffmpeg \
libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev \
libsdl1.2-devlibportmidi-dev libswscale-dev libavformat-dev libavcodec-dev
继续报错
Hunting dependencies…
WARNING: “pkg-config freetype2” failed!
WARNING: “freetype-config” failed!
SDL : found 1.2.15
FONT: found
IMAGE : found
MIXER : found
PNG : found
JPEG: found
SCRAP : found
PORTMIDI: found
PORTTIME: found
FREETYPE: not found
Missing dependencies
apt search freetype
的时候发现有一个python3-freetype
存在,于是安装sudo apt-get install python3-freetype
还是不好使
继续找,发现有建议安装依赖sudo apt-get build-dep python-pygame
的,试试看
好像还是有点报错,但是毕竟还是装上了.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。