Pythonでノイズキャンセリングアプリ化するコードです😤デスクトップアプリ

2024.12.14

Logging

おはようございます.昨日の続きを記載します、Pythonでデスクトップアプリを作りました、デスクトップにPythonが入っている環境で下記のファイルを実行することでノイズキャンセリングが出来ます.

尚、前手順でライブラリを2つインストールください.

pip install scipy noisereduce
import tkinter as tk
from tkinter import filedialog, messagebox
from scipy.io import wavfile
import noisereduce as nr
import os

def select_file():
    file_path = filedialog.askopenfilename(
        filetypes=[("WAV files", "*.wav")]
    )
    if file_path:
        file_entry.delete(0, tk.END)
        file_entry.insert(0, file_path)

def reduce_noise():
    file_path = file_entry.get()
    if not os.path.isfile(file_path):
        messagebox.showerror("エラー", "Please select a valid WAV file.")
        return

    try:
        # Load data
        rate, data = wavfile.read(file_path)
        
        # Perform noise reduction
        reduced_noise = nr.reduce_noise(y=data, sr=rate)

        # Save reduced noise file
        output_path = os.path.splitext(file_path)[0] + "_reduced_noise.wav"
        wavfile.write(output_path, rate, reduced_noise,stationary=True,prop_decrease=0.7)
        
        messagebox.showinfo("成功", f"出力先:\n{output_path}")
    except Exception as e:
        messagebox.showerror("Error", f"An error occurred: {e}")

# Create the main application window
root = tk.Tk()
root.title("ノイズキャンセリングツール")

# Input file selection
frame = tk.Frame(root)
frame.pack(pady=10, padx=10)

tk.Label(frame, text="Select a WAV file:").grid(row=0, column=0, pady=5, padx=5)
file_entry = tk.Entry(frame, width=40)
file_entry.grid(row=0, column=1, pady=5, padx=5)
select_button = tk.Button(frame, text="Browse", command=select_file)
select_button.grid(row=0, column=2, pady=5, padx=5)

# Noise reduction button
process_button = tk.Button(root, text="ノイズ除去", command=reduce_noise, bg="lightblue")
process_button.pack(pady=10)

# Run the application
root.mainloop()

因みにこのコードをパッケージ化したい場合はPythonの下記のライブラリをインストールするとパッケージ化が出来ます.

pip install pyinstaller
pyinstaller noise-cut.py

自分でもノイズキャンセリングを試してみましたが精度はいまいちでした、noisereduceの微調整が必要になりそうです.

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

エラー, コード, デスクトップ, デスクトップアプリ, ノイズキャンセリング, ノイズキャンセリングツール, ノイズ除去, パッケージ化, ファイル, ライブラリ, 下記, 出力先, 前手順, 微調整, 成功, 環境, 精度, 自分,

音声ノイズキャンセリングはこれ使っています.

2024.12.13

Logging

おはようございます.AIで生成されたボイスにノイズが入るので音声ノイズキャンセリングを使っています.これを使用するとVideoProc Converter AIを使用すると結構きれいにノイズキャンセリングが出来るので良いです.

因みに自分は買い切りタイプを使っています.またOBS Studioなんかでも上手く使用するとノイズキャンセリングが出来るらしいけど、AI程ではないと思っています.

また無料でノイズキャンセリングしたい場合はnoisereduceと言うPythonライブラリがあるので使用すると良いかも知れない.使用の仕方は公式サイト(GitHub)に記載れたいる通りに行えば良いだけです.

pip install noisereduce

ライブラリをインストールしてきて次にサンプルコードのファイル名を任意の音源ファイル名に変更してサンプルコードを実行すればノイズキャンセリングされた音源が出力されます.

from scipy.io import wavfile
import noisereduce as nr
# load data
rate, data = wavfile.read("mywav.wav") #ノイズのある音源
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
wavfile.write("mywav_reduced_noise.wav", rate, reduced_noise) #ノイズキャンセリングが出力される

因みにサンプルコードではサンプルコードと同じ階層にノイズのある音源があるものとしています.

自分は手持ちに有料のAIノイズキャンセリングがあったのでそれを使用していますが、サンプルコードを元にオリジナルのアプリを作って自分だけで利用するのはありかなと思います.

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

アプリ, サンプルコード, ノイズ, ノイズキャンセリング, ファイル名, ボイス, ライブラリ, 仕方, 使用, , 公式サイト, 手持ち, 有料, , 買い切りタイプ, 通り, 階層, 音声ノイズキャンセリング, 音源, 音源ファイル名,