質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

Q&A

1回答

2454閲覧

有名なサイトを参考にしてPythonとSPTKでボイスチェンジャを作りたい

mochi_iris

総合スコア4

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2019/12/12 06:25

編集2019/12/12 07:41

前提・実現したいこと

######PythonとSPTKを使いボイスチェンジャを作りたい。

以下のサイトを参考にさせていただきました。
ソースコードにつきましては、基本的に書き換えておらずそのまま使用しています。

発生している問題・エラーメッセージ

C:\Python27\python.exe C:/Users/joho-2/PycharmProjects/Rsound11/Rsound11.py *** Now recording ... (10 sec) *** extract pitch ... 'x2x' �́A�����R�}���h�܂��͊O���R�}���h�A ����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B 'x2x' �́A�����R�}���h�܂��͊O���R�}���h�A ����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B *** extract mel cepstrum *** modify parameters ... 'sopr' �́A�����R�}���h�܂��͊O���R�}���h�A ����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B 'sopr' �́A�����R�}���h�܂��͊O���R�}���h�A ����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B *** play! Traceback (most recent call last): File "C:/Users/joho-2/PycharmProjects/Rsound11/Rsound11.py", line 127, in <module> play("output.raw") File "C:/Users/joho-2/PycharmProjects/Rsound11/Rsound11.py", line 78, in play f = open(raw_file, "rb") IOError: [Errno 2] No such file or directory: 'output.raw' Process finished with exit code 1

該当のソースコード

Python

1#coding: utf-8 2import pyaudio 3import struct 4import subprocess 5 6# SPTKを使った簡単なボイスチェンジャー 7 8CHANNELS = 1 9RATE = 16000 10CHUNK = 1024 11 12def record(raw_file, record_seconds=5): 13 """音声ファイルを録音する 14 録音時間は固定。キーボードを押すとループ終わりができなかった・・・""" 15 fp = open(raw_file, "wb") 16 for _ in range(0, int(RATE / CHUNK * record_seconds)): 17 data = stream.read(CHUNK) 18 fp.write(struct.pack('s' * CHUNK * 2, *data)) 19 fp.close() 20 stream.stop_stream() 21 stream.close() 22 p.terminate() 23 24def extract_pitch(raw_file, pitch_file): 25 """ピッチパラメータの抽出""" 26 cmd = "x2x +sf %s | pitch -a 1 -s 16 -p 80 > %s" % (raw_file, pitch_file) 27 subprocess.call(cmd, shell=True) 28 29def extract_mcep(raw_file, mcep_file): 30 """メルケプストラムパラメータの抽出""" 31 cmd = "x2x +sf %s | frame -p 80 | window | mcep -m 25 -a 0.42 > %s" % (raw_file, mcep_file) 32 subprocess.call(cmd, shell=True) 33 34def modify_pitch(m, pitch_file, mcep_file, raw_file): 35 """ピッチを変形して再合成 36 mが1より大きい => 低い声 37 mが1より小さい => 高い声""" 38 cmd = "sopr -m %f %s | excite -p 80 | mlsadf -m 25 -a 0.42 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (m, pitch_file, mcep_file, raw_file) 39 subprocess.call(cmd, shell=True) 40 41def modify_speed(frame_shift, pitch_file, mcep_file, raw_file): 42 """話速を変形して再合成 43 frame_shiftが小さい => 早口 44 frame_shiftが大きい => ゆっくり""" 45 cmd = "excite -p %f %s | mlsadf -m 25 -a 0.42 -p %f %s | clip -y -32000 32000 | x2x +fs > %s" % (frame_shift, pitch_file, frame_shift, mcep_file, raw_file) 46 subprocess.call(cmd, shell=True) 47 48def hoarse_voice(pitch_file, mcep_file, raw_file): 49 """ささやき声""" 50 modify_pitch(0, pitch_file, mcep_file, raw_file) 51 52def robot_voice(frame_period, record_seconds, mcep_file, raw_file): 53 """ロボット声 54 frame_periodが小さい => 低い 55 frame_periodが大きい => 高い""" 56 sequence_length = record_seconds * RATE * frame_period 57 cmd = "train -p %d -l %d | mlsadf -m 25 -a 0.42 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (frame_period, sequence_length, mcep_file, raw_file) 58 subprocess.call(cmd, shell=True) 59 60def child_voice(pitch_file, mcep_file, raw_file): 61 """子供声""" 62 cmd = "sopr -m 0.4 %s | excite -p 80 | mlsadf -m 25 -a 0.1 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (pitch_file, mcep_file, raw_file) 63 subprocess.call(cmd, shell=True) 64 65def deep_voice(pitch_file, mcep_file, raw_file): 66 """太い声""" 67 cmd = "sopr -m 2.0 %s | excite -p 80 | mlsadf -m 25 -a 0.6 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (pitch_file, mcep_file, raw_file) 68 subprocess.call(cmd, shell=True) 69 70def raw2wav(raw_file, wav_file): 71 cmd = "sox -e signed-integer -c %d -b 16 -r %d %s %s" % (CHANNELS, RATE, raw_file, wav_file) 72 subprocess.call(cmd, shell=True) 73 74def play(raw_file): 75 """rawファイルを再生""" 76 p = pyaudio.PyAudio() 77 stream = p.open(format=p.get_format_from_width(2), channels=CHANNELS, rate=RATE, output=True) 78 f = open(raw_file, "rb") 79 data = f.read(CHUNK) 80 while data != '': 81 stream.write(data) 82 data = f.read(CHUNK) 83 stream.stop_stream() 84 stream.close() 85 p.terminate() 86 87if __name__ == "__main__": 88 # 録音時間(固定) 89 record_seconds = 10 90 91 p = pyaudio.PyAudio() 92 stream = p.open(format=pyaudio.paInt16, 93 channels=CHANNELS, 94 rate=RATE, 95 input=True, 96 frames_per_buffer=CHUNK) 97 98 pitch_file = "temp.pitch" 99 mcep_file = "temp.mcep" 100 raw_file = "temp.raw" 101 output_file = "output.raw" 102 103 # オリジナルの音声を録音してrawファイルとして書き出し 104 print "*** Now recording ... (%d sec)" % record_seconds 105 record(raw_file, record_seconds) 106 107 # パラメータ抽出 108 print "*** extract pitch ..." 109 extract_pitch(raw_file, pitch_file) 110 111 print "*** extract mel cepstrum" 112 extract_mcep(raw_file, mcep_file) 113 114 # パラメータ変形いろいろ 115 print "*** modify parameters ..." 116 117 # どれか一つしか有効にできない 118 modify_pitch(0.3, pitch_file, mcep_file, output_file) 119# modify_speed(300, pitch_file, mcep_file, output_file) 120# hoarse_voice(pitch_file, mcep_file, output_file) 121# robot_voice(100, record_seconds, mcep_file, output_file) 122# child_voice(pitch_file, mcep_file, output_file) 123 deep_voice(pitch_file, mcep_file, output_file) 124 125 # 変換した音声を再生 126 print "*** play!" 127 play("output.raw")

試したこと

Pythonのバージョンの問題かと考え、3系から2系に変えたのですがうまくいかず・・・
そもそも録音ができていないのではと思い、何度もサイトを見直したりして勉強したのですが、
ここからエラーがなくならず、どうしてもうまくいきませんでした;;

補足情報(FW/ツールのバージョンなど)

  • Python 2.7.17
  • SPTK 3.5 (ヘルプメッセージまで出力できています)
  • エディタ PyCharm (pyaudio インストール済み)
  • Windows 7
最近Pythonを勉強したばかりの初心者です。助言いただけると本当にうれしいです。 どうぞ宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ボイスチェンジャ類の関数を実行した後、output.rawは生成されていますでしょうか?

投稿2019/12/12 06:34

TinyTech

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mochi_iris

2019/12/12 07:10

回答ありがとうございます。 おそらく生成されていないものと思います。 もし生成されるとしたら、どこに生成されるべきなのでしょうか? PycharmProjects内のファイルでしょうか?初心者丸出しの質問で申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問