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

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

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

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

Q&A

解決済

2回答

1107閲覧

pythonでsoftalkでゆっくり音声を自動保存したい

fpajpajpf

総合スコア1

Python

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

0グッド

0クリップ

投稿2023/03/31 00:24

編集2023/03/31 05:05

実現したいこと

pythonでゆっくり音声を自動生成して保存したい。

前提

https://qiita.com/Mechanetai/items/78b04ed553cce01fa081
このサイトを参考に、ゆっくり音声を自動生成したいのですが、再生した音声を録音し、ファイルに保存することが出来ません。

該当のソースコード

import os import subprocess os.chdir(os.path.dirname(os.path.abspath(__file__))) _start = "start softalk\SofTalk.exe" _speed = "/S:120" _word = "/W:おはようございます" _record = "/R:test.wav" _volume = "/V:50" _command = [_start, _speed, _record, _word] print(_command) subprocess.run(' '.join(_command), shell=True)

/S: 読み上げの速度
/V: 声の音量
/W: 読み上げたい文章
引数はこのようになっています。

試したこと

例)/R:c:\test.wav
↑のように書くと、音声を保存できるらしいのですが、できませんでした。
また、上記のコードでは保存することが出来ません。
どのようにコードを変更すればよいでしょうか?

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

Python 3.8.3
SofTalk 1.93.46
Windows10

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

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

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

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

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

TakaiY

2023/03/31 00:53

> 例)/R:c:\test.wav ↑のように書くと、音声を保存できる のであれば、そのように書けばいいのではありませんか? わからないことは何ですか?
fpajpajpf

2023/03/31 00:55

はい、実際にこれで実行してもCドライブには音声が保存されていませんでいた。 なので分かりやすくするために、同じプログラムがあるファイル内に保存しようとしたのです。わかりづらくて申し訳ありません。
fpajpajpf

2023/03/31 00:56

なので、どうやったら音声を保存できるのかを知りたいで。例のように書いても保存できませんでした。
TakaiY

2023/03/31 01:00

なるほど、「保存できる」ではなく、「サイトのとおりに /R:c:\test.wav と書いても保存できなかった」ということですね。 ここは、質問に対するコメントを書くところです。 質問は編集できるので直しておくといいと思います。 pythonの通常の文字列では、 「\」は1つでは特殊な意味(エスケープ文字)なので、 _record = "/R:c:\\test.wav" もしくは _record = r"/R:c:\test.wav" とするとどうなりますか? パスは適切なものに変えたほうがよさそうですが。
fpajpajpf

2023/03/31 01:08

ありがとうございます。_record = r"/R:c:\test.wav"Cドライブには保存できました。ファイルのパスを変更して同じファイルに内に保存できました!!!!
fpajpajpf

2023/03/31 01:09

この先頭につけたrとはどういう意味なのでしょうか?(この先のプログラム改良のために知っておきたいので)
TakaiY

2023/03/31 01:10

回答に書いておきますね。
jbpb0

2023/03/31 04:06

質問に > ↑のように書くと、音声を保存できる と書いてますが、事実はそうではなく、 > 実際にこれで実行してもCドライブには音声が保存されていませんでいた。 ならば、質問の「音声を保存できる」は事実とは異なりますので、TakaiYさんも指摘してるように、質問を編集して、事実に合うように書き直してください
guest

回答2

0

プログラムと同じ場所に出力したい場合は、以下のように自力で絶対パスを作成するとよいです。

Python

1path = os.path.join(os.getcwd(), 'test.wav') 2_record = f"/R:{path}"

投稿2023/03/31 01:27

can110

総合スコア38266

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

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

0

ベストアンサー

pythonの通常の文字列では、 「\」は1つでは特殊な意味(エスケープ文字)なので、
_record = "/R:c:\\test.wav" もしくは
_record = r"/R:c:\test.wav" としてはどうでしょうか。
パスは適切なものに変えたほうがよさそうですが。

文字列のリテラルが 「r」で始まるものは、raw文字列と言います。 どのようなものなのかは、公式のドキュメントや、検索すると出てくる説明が詳しいです。

投稿2023/03/31 01:10

編集2023/03/31 01:14
TakaiY

総合スコア12765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問