voispire

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2019 License: BSD-3-Clause Imports: 18 Imported by: 0

README

voispire

Go Report Card Godoc License

Alpha Version

コマンドラインで動作するボイスチェンジャーです。

使用方法

引数なしで実行するとサブコマンド一覧が表示されます。

NAME:
   voispire - ボイスチェンジャー

USAGE:
   voispire [global options] command [command options] [arguments...]

DESCRIPTION:
   ピッチシフトに用いる基本周波数の抽出に
   「音声分析変換合成システム WORLD」
   https://github.com/mmorise/World を使用しています。

AUTHOR:
   but80 <mersenne.sister@gmail.com>

COMMANDS:
     version, v  バージョン情報を表示します
     device, d   オーディオデバイス一覧を表示します
     start, s    ストリーミングを開始します
     convert, c  ファイル変換を開始します
     help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h  show help
start サブコマンド

現バージョンでは、start サブコマンドはフォルマントシフトのみ使用できます。ピッチシフトはできません。

NAME:
   voispire start - ストリーミングを開始します

USAGE:
   voispire start [command options] [ <input-device> [ <output-device> ] ]

OPTIONS:
   --formant value, -f value  フォルマントシフト量 [半音] (default: 0)
   --verbose, -v              詳細を表示
   --debug                    デバッグ情報を表示

voispire start -f 3 のようにすると、デフォルトのオーディオデバイスでストリーミングが開始されます。 マイク等から入力された音声のフォルマントが3半音シフトされ、ヘッドホン等から変換後の音声が出力されます。

次項に説明する device サブコマンドで確認できるデバイスIDを指定すると、任意のオーディオデバイスを使用できます。 voispire start -f 3 10 11 のようにすると、ID=10 の入力デバイス および ID=11 の出力デバイスが使用されます。

device サブコマンド

voispire device でオーディオデバイス一覧が表示されます。 使用するデバイスIDを控えてから start サブコマンドに使用してください。

入力デバイス・出力デバイスはそれぞれIDと対応するデバイスが異なることにご注意ください。

convert サブコマンド
NAME:
   voispire convert - ファイル変換を開始します

USAGE:
   voispire convert [command options] <input-file> [ <output-file> ]

OPTIONS:
   --formant value, -f value       フォルマントシフト量 [半音] (default: 0)
   --verbose, -v                   詳細を表示
   --debug                         デバッグ情報を表示
   --transpose value, -t value     ピッチシフト量 [半音] (default: 0)
   --frame-period value, -p value  フレームピリオド [msec] (default: 5)
   --rate value, -r value          出力サンプリング周波数(省略時は入力と同じ) (default: 0)

voispire convert -t 6 -f 3 input.wav output.wav のようにすると、音声ファイル input.wav を6半音ピッチシフト・3半音フォルマントシフトして output.wav に保存します。

<output-file> を省略すると、デフォルトの出力デバイスで直接音声が再生されます。

ビルド

必須環境
  • 以下のいずれかのOS
    • Windows + MinGW
    • macOS
    • Linux
  • 以下のライブラリ
  • Go 1.12
ビルド手順
go run mage.go build

技術情報

ピッチシフト

だいぶ端折った処理ですが、多分 Melodyne と同じ方式 です。フォルマントも一緒にずれるので、ピッチシフト量の引数の分だけフォルマントシフト量からマイナスすることで、結果的にキャンセルしています。

フォルマントシフト

「周波数スペクトルにその包絡線の逆数をかけて一旦キャンセルし、シフトした包絡線をかけ直す」方法でフォルマントシフトを実装しています。

周波数スペクトルの包絡線はケプストラム分析によって抽出していますが、繰り返しこの処理を行うことで、より理想的な包絡線に漸近させる工夫を施しています。

TODO

  • ピッチシフト
    • WORLD のGo化とストリーミング
    • 発話開始箇所のプチノイズ軽減(f0の先読み)
  • フォルマントシフト
    • 精度・速度向上
  • 連続FFT処理
    • フレーム間の接続方式改善
  • 自動ビルド・リリース
  • GUI

License

BSD 3-Clause License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ListDevices

func ListDevices() error

ListDevices は、オーディオデバイスの一覧を表示します。

func Start

func Start(o Options) error

Start は、音声変換を開始します。

Types

type Options

type Options struct {
	Formant         float64
	Transpose       float64
	FramePeriodMsec float64
	Rate            int
	InDevID         int
	OutDevID        int
	InFile          string
	OutFile         string
}

Options は、 Start 関数のオプションです。

Directories

Path Synopsis
cmd
internal
fft
wav

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL