分類
软件

轉用 Visual Studio Code

之前無論是 PHP、Java 還是 Python,我都使用 Eclipse 這款開源的老編輯器。直到最近因爲種種原因切換到了 Visual Studio Code。

其中最重要的一點是,我的網絡成本增加,使用 Visual Studio Code 的遠程模式( Remote Development using SSH ),可以在服務器上編程與調試,節省了很多流量。遠程還有一個優點是網絡質量比本地更好,比如安裝編譯安卓應用所需的谷歌依賴,那些動輒上 GB 大小的依賴,再也不必考慮代理的問題。

我還是習慣於用 python -m venv project_venv 的方式建立項目專用的虛擬環境,VS Code 會自動識別項目中的虛擬環境,很方便。

代碼檢查與美化( linting )也是開箱即用。Eclipse 雖然可以自由配置多種 linter,但是我費了很多心力都不得其法。

在離開 Eclipse 前給他們捐了一點錢,我還是很樂意再用回去的,如果 Eclipse 能在日常編程體驗上追上其他編輯器。前不久還收到一個 Eclipse 用戶調查,我甚至看不懂他們新產品是做什麼的,可能我就快要被編程行業所淘汰了……

分類
软件

使用 Screen Stream 來分享安卓屏幕

Screen Stream 是一款由 Dmitriy Krivoruchko 開發的老牌(始於 2016 年)開源安卓屏幕共享軟件。使用方便,還支持中文,推薦有需要的朋友使用。

它主要是局域網共享屏幕,甲手機打開軟件,點擊開始即可。然後乙手機,在瀏覽器裏輸入甲手機的網址(或掃碼)就可以觀看了。就是這麼簡單!如果想要通過因特網分享屏幕,那麼你得確保你有公網 IP,使用方法是一樣的。

通過調教幀率和畫質,可以減輕手機網絡和性能消耗(少發一點熱)。通過設置安全選項,可以控制只通過 WiFi 網絡分享(即不通過手機網絡分享)或者只在本機分享(相當於是程序接口)。

通過服務器實現屏幕共享

由於沒有公網 IP,又想要分享屏幕給遠方親友,則可以通過服務器來實現。思路有很多,我有實現一個非常簡單辦法。對分享一方來說,可以通過 Termux 來把圖片 Post 到服務器,服務器收到圖片後展示出來即可。所用的 Termux 命令爲:

watch -n 3 "curl http://127.0.0.0.1:8080/stream.jpeg | curl -k -s -X POST --data-binary @- https://my.image.server/image_in"
#即每隔 3 秒,把圖片傳送到服務器一次

我的圖片服務是一個簡單的 Django 網站,免費部署在 pythonanywhere,等我有空了可以把代碼整理下發出來。我也測試過讓甲通過瀏覽器,用 Javascript 來把圖片轉發到服務器,Chrome 下是可以的,但是火狐裏網頁一到後臺,JS 就停止工作,搜了一下也沒找到火狐網頁保活的辦法。

理論上,把視頻流直接轉發到 Nginx,應該更加高效流暢,但是我沒有測試過。

分類
Linux 软件

Fedora 35 與 Nvidia GPU 驅動

TL;NR

如果電腦開啓了 Secure Boot, 又不想頭痛地處理簽名,可以關掉。然後跟隨這個網頁的方法安裝開源的 Nvidia 驅動: Howto/NVIDIA。或者跟隨這個網頁安裝 Nvidia 官方的驅動:Fedora 36/35/34 NVIDIA [515.57 / 510.73.05 / 470.129.06 / 390.151 / 340.108] Drivers Install Guide。這個網頁裏也有介紹如果禁用 Fedora 自帶的 Nouveau 驅動的方法。

The Story

打算嘗試在 Fedora 上編輯視頻,一番搜索後發現 DaVinci Resolve 好像很強大,而且還有 Linux 的免費版本。下載安裝很順利,但是打開後歡迎頁面是黑屏。禁用 Secure Boot 裝了 rpmfusion 推薦的驅動後可以打開了,但是 GPU 設置成 CUDA 模式提示無法渲染圖像,錯誤編碼 999,改成 OpenGL 模式不報錯,但是連 JPG 圖像的預覽都是花的,我以爲是 rpmfusion 的驅動不行(實際不是)。於是去裝官網驅動,禁用了 Nouveau 驅動後安裝成功,但是 DaVinci 還是無法使用,後來發現可能是筆記本自動選擇顯卡 Optimus 有關,可以參考 OptimusHow to Set Nvidia as Primary GPU on Optimus-based Laptops。我並沒有把 Nvidia 設置爲默認,因爲覺得平常板載就夠了。所以後來我使用環境變量的方法成功運行了 DaVinci Resolve

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia /opt/resolve/bin/resolve

最後我發現相機拍攝的 mov 視頻文件導入後還是只有音頻,想要編輯的話要先對視頻進行轉碼。而且導出格式也有蠻多限制,所以就放棄了 DaVinci Resolve。

然後我搜索到 Linux 平臺另一款「強大」的視頻編輯器 Lightworks,到官網下載免費版體驗,發現需要註冊,註冊時發現有 recaptcha 人機驗證,我換了好幾個網絡居然都無法通過。無奈從網上找了個安裝包,安裝後打開軟件發現需要登錄才能使用所以還是要註冊。最後是第二天在手機瀏覽器裏註冊成功了。然後發現導出 1080p 的視頻居然是付費版本才有的功能,2022年了喂~

最後我去看 Fedora 的手冊,上面推薦 Kdenlive,從官網直接下載 AppImage 檔直接運行,視頻和圖片都順利導入,導出也都沒有什麼限制,h264、h265、ProRes 全都 OK!而且也支持視頻穩定和關鍵幀調整。雖然兩個視頻漸變過度的 Mixes 操作很怪異,但是至少能達到想要的效果。時間軸的操作可能由於還不會用,所有也感覺不太順手,但是至少可以正常導入、剪輯、調整顏色、加字幕和出片了。

分類
软件

Anuto TD 一個塔防遊戲

Anuto TD 是一款製作精良的塔防遊戲,它「浪費」了我很多時間!

分類
软件

Mozilla的開源語音轉文字庫DeepSpeech

DeepSpeech 是一個開源的語音文字引擎,使用的是基於百度深度語音研究論文的機器學習技術訓練的模型。DeepSpeech 項目使用谷歌的 TensorFlow,以使實施更加容易。

#https://deepspeech.readthedocs.io/en/r0.9/?badge=latest
# 創建一個虛擬環境
virtualenv -p python3 $HOME/tmp/deepspeech-venv/
source $HOME/tmp/deepspeech-venv/bin/activate

# 安裝 DeepSpeech
pip3 install deepspeech

# 下載預編譯都英文模型文件
curl -LO https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.pbmm
curl -LO https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.scorer

# 下載測試音頻文件
curl -LO https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/audio-0.9.3.tar.gz
tar xvf audio-0.9.3.tar.gz

# 把音頻文件轉換成文字
deepspeech --model deepspeech-0.9.3-models.pbmm --scorer deepspeech-0.9.3-models.scorer --audio audio/2830-3980-0043.wav

使用 DeepSpeech 轉換法語

DeepSpeech 目前只預先訓練了英語和漢語普通話,如果要轉換法語,可以使用 Common Voice 下的 commonvoice-fr 中都模型。轉到發佈頁面,下載 model_tensorflow_fr.tar.xz 這個文件即可。實際使用中,你可能需要需要安裝 ffmpeg 和 vox 來轉換 mp3 格式都音頻文檔。轉換後的文字沒有段落,需要手動分段。

sudo dnf install ffmpeg sox
ffmpeg -i speech.mp3 speech.wav
deepspeech --model output_graph.pbmm --scorer kenlm.scorer --audio audio/speech.wav > speech.txt

如果想要把文字轉換成語音,可以使用Mozilla 的開源文字轉語音庫

分類
软件

Mozilla 的開源文字轉語音庫

Mozilla 的這款開源的文字轉語音 TTS(Text-to-Speech)引擎,是一個用於生成高級文本到語音的庫。它建立在最新的研究基礎上,旨在實現訓練的簡易性、速度和質量之間的最佳權衡。它帶有預訓練的模型和測量數據集質量的工具,已經在 20 多種語言的產品和研究項目中使用。

一些體驗:

  • 雖然我在 Python 3.9 下運行沒有任何問題,但是爲了少出問題,最好是用 3.6。
  • 安裝完所有依賴,虛擬環境的文件夾達到 3.1 GB,自帶的英文模型 107 MB,下載的中文模型 654 MB。
  • 我電腦沒有 GPU,生成一句話大概耗時 6 秒左右。
  • 項目自帶了一個 TTS 服務器,直接運行 tts-server 就可以在網頁上體驗 TTS。
  • TTS 有時候(尤其是中文)會抽風。(後來發現是文本沒有加句號導致的)

兩個示例:

The human voice is the most perfect instrument of all.

我們的祖國是花園

如果想要把語音轉換成文字可以使用Mozilla的開源語音轉文字庫DeepSpeech

本文更新於 2022/04/15。

分類
软件

使用 Send Reduced 來減小圖片大小

Send Reduced 雖然只有區區 52 KB,但是卻有兩個非常好用的功能——壓縮照片和清理 Exif 數據。現在安卓手機照片越來越大,動輒一張照片就八九 MB,但是選擇 85% 的壓縮比壓縮後,圖片大小就只剩下六百多KB,肉眼也沒有可見的畫質損失,很適合發送給聯繫人和社交媒體。

不過也有一個小小缺陷,就是壓縮後的最大尺寸是個選項列表,最大的選擇是 2560,如果你一定要選擇大於此尺寸的圖片,就不能用它不行了。