С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 04.11.2017
Сообщений: 2

Sound Forge редактирование скрипта

09.10.2009, 10:55. Показов 3050. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я обрабатываю в программе Sound Forge 9 записи лекций. Лекции диктовались под запись, поэтому между словами и фразами значительные паузы. Моя цель - удалить паузы. При этом лекция становится в два раза короче. Эти паузы я отслеживаю по громкости звука, но часто в паузу попадают непродолжительные шумы, по громкости сопоставимые с голосом, что делает невозможным удаление паузы целиком. К счастью шумы, которые попадают в паузы имеют продолжительность не более полсекунды, а одно слово лектор произносит минимум за полсекунды. Вообщем, в итоге у меня все сводится к тому, что надо сохранить все области (отмеченные части звукового файла) в один файл. В Sound Forge есть файл скрипта, который сохраняет каждую область в отдельный файл. Вот его содержание:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.IO;
using System.Windows.Forms;
using SoundForge;
 
//Run with a file that contains regions
//Iterates through the regions, renders to PCA and saves the rendered file to c:\media\rip
//Scan the file for MODIFY HERE to see how to quickly customize for your own use
 
public class EntryPoint {
public void Begin(IScriptableApp app) {
 
   //MODIFY HERE-----------------------------------------------
   string szType  = ".pca"; //choose any valid extension: .avi  .wav  .w64 .mpg .mp3 .wma .mov .rm .aif .ogg .raw .au .dig .ivc .vox .pca
   object vPreset = ""; //put the name of the template between the quotes, or leave blank to pop the Template chooser. 
   string szDir   = @"c:\Media\Rip"; //change the target path here
 
   ISfFileHost file = app.CurrentFile;
   if (null == file)
   {
      app.SetStatusText("Open a file containing regions before running this script. Script stopped.");    
      return;
   }   
 
   //make sure the directory exists
   Directory.CreateDirectory(szDir);
 
   ISfRenderer rend = null;
   if (szType.StartsWith("."))
       rend = app.FindRenderer(null, szType);
   else 
       rend = app.FindRenderer(szType, null);
 
   if (null == rend)
   {
      app.SetStatusText("Renderer not found. Script stopped.");    
      DPF("renderer for {0} not found.", szType);
      return;
   }
 
   // if the preset parses as a valid integer, then use it as such, otherwise assume it's a string.
   try {
       int iPreset = int.Parse((string)vPreset);
       vPreset = iPreset;
   } catch (FormatException) {}
 
   ISfGenericPreset template = null;
   if ((string)vPreset != "")
       template = rend.GetTemplate(vPreset);
   else   
       template = rend.ChooseTemplate((IntPtr)null, vPreset);
   if (null == template)
   {
      app.SetStatusText("Template not found. Script stopped.");      
      return;
   }
   
   string szBase = file.Window.Title;
 
   foreach (SfAudioMarker mk in file.Markers)
   {
      if (mk.Length <= 0)
         continue;
 
      string szName = String.Format("{0:d2}-{1}-({2}).{3}", mk.Ident, szBase, mk.Name, rend.Extension);
      szName = SfHelpers.CleanForFilename(szName);
      DPF("Queueing: '{0}'", szName);
 
      string szFullName =  Path.Combine(szDir, szName);
      if (File.Exists(szFullName))
          File.Delete(szFullName);
 
      SfAudioSelection  range = new SfAudioSelection(mk.Start, mk.Length);
      file.RenderAs(szFullName, rend.Guid, template, range, RenderOptions.RenderOnly);
   }
 
   SfStatus status = app.WaitForDoneOrCancel();
   DPF("Done -{0}", status);
}
 
 
public void FromSoundForge(IScriptableApp app) {
   ForgeApp = app; //execution begins here
   app.SetStatusText(String.Format("Script '{0}' is running.", Script.Name));
   Begin(app);
   app.SetStatusText(String.Format("Script '{0}' is done.", Script.Name));
}
public static IScriptableApp ForgeApp = null;
public static void DPF(string fmt, params object[] args) { ForgeApp.OutputText(String.Format(fmt, args)); }
} //EntryPoint
А мне нужно сохранить все области в один файл. Скорее всего, переделать этот скрипт под мою задачу совсем просто, но я раньше вообще не писал на C#. Главное, конечно, делается в цикле
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
foreach (SfAudioMarker mk in file.Markers)
   {
      if (mk.Length <= 0)
         continue;
 
      string szName = String.Format("{0:d2}-{1}-({2}).{3}", mk.Ident, szBase, mk.Name, rend.Extension);
      szName = SfHelpers.CleanForFilename(szName);
      DPF("Queueing: '{0}'", szName);
 
      string szFullName =  Path.Combine(szDir, szName);
      if (File.Exists(szFullName))
          File.Delete(szFullName);
 
      SfAudioSelection  range = new SfAudioSelection(mk.Start, mk.Length);
      file.RenderAs(szFullName, rend.Guid, template, range, RenderOptions.RenderOnly);
   }
На ощуп написал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string szName = String.Format("{0}.{1}", szBase, rend.Extension);
szName = SfHelpers.CleanForFilename(szName);
DPF("Queueing: '{0}'", szName);
 
string szFullName =  Path.Combine(szDir, szName);
if (File.Exists(szFullName))
      File.Delete(szFullName);
 
foreach (SfAudioMarker mk in file.Markers)
   {
      if (mk.Length <= 0)
         continue;
 
      SfAudioSelection  range = new SfAudioSelection(mk.Start, mk.Length);
      file.RenderAs(szFullName, rend.Guid, template, range, RenderOptions.RenderOnly);
   }
Но этот код завершается с ошибкой. Что делать не знаю, т.к. C# раньше не видел, если это он. Может кто мне поможет. В силу незнания, я прежде всего жду готовых решений, а не рекомендаций. Помогите.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2009, 10:55
Ответы с готовыми решениями:

Sound Forge 8.0b
У меня стоит SP2 а при установке Sound Forge 8.0b требует скачать NET Framework для SP 1 что делать?

Как настроить Sound forge 10
Как настроить Sound forge 10, не работает микрофон в этой проги. В скайпе, агенте все работает. ...

Sound Forge 10 и 11 на 8ку не ставятся
Устанавливаю что 10ку что 11ую версию она спокойно устанавливается, потом в папке с программой Sony появляется файл...

1
0 / 0 / 1
Регистрация: 04.11.2017
Сообщений: 2
12.10.2009, 05:38
Придумал, как сделать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.IO;
using System.Windows.Forms;
using SoundForge;
 
public class EntryPoint {
public void Begin(IScriptableApp app) {
 
   ISfFileHost file = app.CurrentFile;
   if (null == file)
      return;
 
   long len = file.SampleRate / 2;
   foreach (SfAudioMarker mk in file.Markers)
   {
      if (mk.Length <= 0)
         continue;
      if (mk.Length >= len)
         continue;
     
      file.DeleteAudio(mk.Start, mk.Length);
   }
}
 
public void FromSoundForge(IScriptableApp app) {
   ForgeApp = app; //execution begins here
   app.SetStatusText(String.Format("Script '{0}' is running.", Script.Name));
   Begin(app);
   app.SetStatusText(String.Format("Script '{0}' is done.", Script.Name));
}
public static IScriptableApp ForgeApp = null;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2009, 05:38
Помогаю со студенческими работами здесь

Sound forge 7.0 как активировать
Не удаляйте пожалуйста мою тему, не ответив на мой вопрос. Я плохо разбираюсь в компьютерных программах и в компьютере в целом. Скачала с...

Установка Sony Sound Forge
Прошу помощи ! Не могу установить Sony Sound Forge!!! не 7,8,9,10, Запускаю от имени администратора ,а он подумает-подумает и все! Или...

Нужно руководство по использованию Sound Forge 8.0
Люди помогите, где можно надыбать руководство по использеванию Sound Forge 8.0

Настройки Sound Forge 10.0 сохраняются с обработки предыдущего файла
Всем привет! Ребят, у меня такая проблема: начинаю работать с музыкальными файлами, изменяю, например, разрядность. Потом открываю другой...

Изменение тональности без изменения темпа (Sound Forge 7.0, например)
Дело простое: есть песня, есть Sound Forge 7.0... :rolleyes: Как повысить тональность песни так, чтобы при этом не ускорялся её темп и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru